- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 566251 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 175098
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
支持向量机分类算法
" y. T% O6 G, Q6 `% q' l3 c6 N' ]/ D8 Y" M( o
🚀 优质资源分享 🚀
0 l! X) Y) Q& Q) F( Q2 B; x学习路线指引(点击解锁) 知识定位 人群定位0 p. }" w9 U4 G: \" m' d r$ e
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
. o0 k, `; h6 `3 S; K+ j+ x9 R A💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
4 h* Z1 j5 ~; G) ~" x+ M7 q8 H支持向量机SVM1 T y, e/ a4 C: i0 F" N
4 \& B2 j& @' M7 v$ Q- a
支持向量机原理
8 f' r; Y# Y2 t. B+ C. {* P, M8 H6 T5 W" }
1.寻求最有分类边界! F! W) X" R% @. F9 f
8 s1 n; P( x% i
正确:对大部分样本可以正确的划分类别
+ K( ?/ j: `4 u$ F8 f( Q% M2 W; ?( q4 g$ F: E1 |5 A
泛化:最大化支持向量间距# O0 X" Q1 N) Y/ l
) }& z" G% Z' k2 _公平:与支持向量等距
3 G) o& w4 T- Y9 c0 k& ^/ _3 H- u, [4 C' P: Q& v ~; ?$ x3 E
简单:线性、直线或平面,分割超平面8 \- F" Y k7 a; I# @; e0 m. D5 D
9 n: b7 z! `# ?" d8 S: `1 m0 `2.基于核函数的生维变换
$ @( ^ s* C# X6 [- c4 B" Y4 ]) E* U* _2 W% I
通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
5 z( @* b: t) z$ C: n- }* |6 f7 Z1 F# a7 q
一、引论/ c; @; K0 |7 d4 G, P6 R* }' P+ V" X
$ U4 j; t/ y: f9 A4 _1 \
使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
_2 @& t0 o1 @* K* ^) r. q, U$ j# s8 J8 [- Y( l8 L! V _" `
. m& Y& _' |+ z
2 ^9 \4 o' i1 `5 M* V$ I" K现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。
% l4 v+ `; {/ b* N7 Z9 V" s: X% \4 I) K
我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:# }+ M; E$ B# H/ d& {
2 ?- @/ g( e6 J) Z/ Y+ i; y# Z二、理论铺垫 q' m6 e+ u; x! v S
+ u5 ] C+ A& r. `5 o6 p线性可分性(linear separability)
% f, @' u6 Y# z8 S5 z# B% Y1 C. y; O) Y* f, L' A) I+ Y6 {
2 t! ^% Q. q1 o$ A- I: L0 G" l
而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
8 ]1 w; F8 {) d, K4 T" a% r2 f1 _; {* A ]' s
! K7 `" g2 H3 S8 U( o% h) w M
& _% Z0 R3 z' ^6 w决策边界2 A- y7 K7 D: p, m% M) O- n
9 i% u$ y$ R5 |$ L
SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
; t$ ^! }. O, ^& a4 ^
( W5 g6 ~1 w& j3 k% J: x
) Q5 A" `, E1 F4 u- r7 M7 g: m. X2 o5 e! ~2 a/ t4 [
总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
j$ W- y: o+ T/ U I7 H! y* x1 j/ i+ [1 Q( ?
支持向量(support vector)
' _' d5 s" {/ K* a( U' o8 @0 [# l. j/ G" [
在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:5 K6 ?6 ^7 g( P# ^/ G
8 C, |7 L! K) h# K1 k" i& m
# w: M+ j P% l. P R- A( x% _4 n
" C/ }& P+ I6 i9 I$ @9 d5 b$ X: ^
6 \+ ^1 b2 {# H! l6 M$ q
核方法
5 N2 s. E. |" P
7 e, j' [$ d+ ?1 k# g! q* [9 l! I# v5 H7 V/ z
. H/ E# k' I% T4 @$ m. }
' G' [ O: K& v9 U# J( u
+ A% K- L) h& H- o* b5 o H( X以回避内积的显式计算。5 v- l# y8 k, z# j3 I
) I6 l9 y& Y2 Z: \4 z1 B2 w7 @
常见的核函数:6 W9 O3 o5 S, j, p
' i7 S. p7 J% d$ U
3 s& N! T* T6 E, |( H" ~7 ~, K
kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'9 e1 Y& b6 e% F$ a
1% ?# n* i( L9 ^; H5 N/ w. ~' E
当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。3 h) C4 y& k2 m, g0 C5 ]2 h. X
; z# o% |3 H' Q# Z2 [& w- J; B# JSMO序列最小优化算法+ ?7 W8 R( ^" P6 D W2 [/ Z- l
) h% y' S9 @- Z# W# w
2 I6 m& D9 n" A' c) K
. s. m" m% P) m3 j. {) o
1 p2 z7 w+ @4 T$ x$ A3 o( K" ~. g! U. R9 X% y
- i- K) j) R6 ~
8 ?6 u: m/ x, n. l- I: \1 ^1 o三、Python sklearn代码实现:
1 v, j+ g' e( n9 J
6 s- @! f( A& J, Z. P# w5 M1 j7 ysklearn.svm.SVC****语法格式为:1 Y7 ]3 H* ~" k5 f& x
' ?! A% c e3 [6 `" u: }# I0 S* J0 N
class sklearn.svm.SVC( *,
8 P( M( b) v. M. d! M C=1.0,
1 s" S6 \1 s) q# x kernel='rbf',( d2 A# i- N; q! I- A4 d
degree=3, ?% i/ m( J1 y! t7 k% M. s
gamma='scale', 8 k4 I& _. z2 ]0 ~: t5 w8 n
coef0=0.0, 3 R4 n0 k" o5 F1 Z- E
shrinking=True, 3 R. ~9 e$ l# a9 R
probability=False,
' c- x) }- A/ l2 N) Z tol=0.001,
6 ~5 R8 o7 O! e! z1 ]( }* L# C cache\_size=200, ! A8 t3 B Z7 m2 u
class\_weight=None, 5 k, s0 _4 \! S! `8 T# D
verbose=False, / Y/ {4 |" f/ f3 V/ T
max\_iter=- 1,
9 G8 v8 D2 x4 c5 t: t4 D2 g decision\_function\_shape='ovr',
- K( x1 q* p& o/ g break\_ties=False,
+ Q4 Y" ]/ X4 s4 h' ~ random\_state=None)- L) s3 H% O1 [- E2 `# G
, R) j' B0 E& T% o* z- p+ I1
! a% D& J1 N# G# _+ D2
5 v6 A' M5 K; @8 s( Y3+ f, g4 R0 t* d, ~9 i/ u/ B2 @
4
3 O, o/ y( A/ `/ o0 T59 Z) W( F0 W) g' E0 E% i6 f
6' q' L" y* z4 R4 W# M! e
7* P9 U* J% _! a) J
8
' n9 z+ b' a/ Q& b9' P0 ^9 O* Z0 q% I! b
108 r( r7 V5 [0 [
11# a0 O$ f+ ]7 b! K3 [6 j
12. D: x* H1 e, ~: o5 a3 F1 K
13
0 R, X5 z4 F2 v! D) ?4 p5 e14
9 T. m* T- f5 n5 o15% t3 E; Y$ T( x: A' Q
16
$ S. h0 z( I0 c% S基于鸢尾花数据的实现及解释
2 D8 s- e, o) s9 l" x# j: N0 @$ a R0 s$ h# o$ h7 V
代码如下:
8 a+ _2 |) \ e2 o3 Q
. J5 |( ~2 o: t2 w7 ^7 I 1 # 导入模块
! l2 }) f- C1 o! H! @- \" o 2 import numpy as np
^, L; r0 f& o 3 import matplotlib.pyplot as plt8 |1 c1 W& U/ T! v! X* b
4 from sklearn import svm, datasets
6 Q4 C! U6 K& f6 N1 @% L0 [ 5 from sklearn.model\_selection import train\_test\_split
$ C' X0 B5 n7 y; Y/ G 6
4 K. K2 g! t: F% @) k3 \$ L. `& T 7 # 鸢尾花数据/ D" h% P6 w4 O" ^* Y1 |& `8 h
8 iris = datasets.load\_iris() #原始数据
* @( y1 m+ ~+ P, }; w9 n2 M. e4 c* d 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)# q; i% V, R& H' E6 q# m- A
10 target = iris.target! q8 [) X/ V* z n; e& _' J" |
11 " c) ?0 C( j+ k, |+ o8 `$ E, e J
12 #数组分组训练数据和测试数据+ I& X8 _: }+ y4 V$ s4 Y
13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
; }& V) O$ j+ L+ R' \% a14 . K" |; ]* R1 }& l" O
15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
1 Q6 f+ j7 T6 q( \" U8 y j8 x16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
8 ], O2 b# L, k) S( e————————————————( c/ X3 y5 t% _9 O" M/ w
版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。; _+ V+ k( @2 h$ }
原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
! D6 }* j* \# a+ G4 l, p" u7 w) i
! z/ w$ D. E9 j8 {: l4 X, P2 {
* E4 I0 w4 G. m5 Q+ G |
zan
|