- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563344 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174226
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
支持向量机分类算法
5 w! X6 g( R. w6 o# Y2 m; m9 O8 H( G( }, h! u& F3 |3 f/ Y$ g( {) `( ]0 I
🚀 优质资源分享 🚀
$ j; N6 J, D) \9 s# m学习路线指引(点击解锁) 知识定位 人群定位
" c- L& D% ^$ q( S9 [🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。$ |. P+ _, u2 }5 V1 N0 y1 I5 r8 R
💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 u! I" v: y5 b7 w
支持向量机SVM1 m% d6 G7 q! n: u6 j( @; Q7 ~1 ~ X- _
2 ]% q* y: z, h- O n
支持向量机原理3 j& u" y3 n( }+ D
9 ]9 _* T" I/ h7 k
1.寻求最有分类边界
, m: l9 M% T' V0 _3 b K9 w1 |5 R+ U0 |# W: p& I; r
正确:对大部分样本可以正确的划分类别
; {5 Y: d+ y+ x2 w, _+ y) t- V% ?/ I
泛化:最大化支持向量间距6 I$ L, d! N! S9 E+ f1 ]
5 C) H3 A4 B: c! ]& Z s1 g3 z
公平:与支持向量等距* [3 O2 `4 F$ _/ D6 i: X$ {
2 E" `5 j' a4 K# ^简单:线性、直线或平面,分割超平面4 B- e0 E; _. }
4 t# k! d7 j+ ?8 `2.基于核函数的生维变换
, @% H \1 X) k) U& G; o3 {
9 @' o! z' B, u8 x' U通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
5 a$ c' o6 O& [( O+ `. Z
2 J2 u0 }5 I6 E7 y: d3 E一、引论+ e+ A( X# h" K3 {" W& a/ {
+ m0 r3 g6 l! p9 k/ b9 j7 c* J0 z使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
* S3 l, @: s9 K+ F9 v2 F( ^: \8 l5 u/ `) a
4 v: t, @: f5 {! G" h& O1 J
, t8 W& p* \1 k+ m# V现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。. S& s8 x* C/ D' F0 W: `* s" I
) j7 O6 {1 P- ~7 _1 j
我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:$ r/ E8 R& C0 L. O( {- |8 @' Y- F
0 E3 F) r" s5 ^- s( u& p
二、理论铺垫% U2 R0 ?% Y9 \1 g
- D: P* O& s7 `+ i k3 T线性可分性(linear separability)
' ^- B3 A( J- S( f) X8 K9 Q) ?8 ?+ N% ~; C p1 g( F2 p) @* d; M/ C
. i# t% d$ C0 i; q8 ?
! e" \6 E- y9 T# C
而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
2 W& J/ | E3 U( e9 O- S# J$ ~# Z1 Z1 d% n. N
0 y, s' O5 D# W4 l w) Y2 S; ~5 s
( J4 l5 i U' n决策边界$ b% s( A, E! U H/ { g
5 H: S& i4 ?: O# A# D2 E3 i
SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。' F* i- P6 _4 E/ z) E! U
9 q; C& k l8 u
3 H# y8 N! o; o9 t% H) I! P: w8 c
' P, r) T$ Q0 K3 _4 `9 j. Q8 \总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。1 a2 _8 F& t2 m2 l; ?' ]& E
( L" G) `# w# B2 N3 K* b
支持向量(support vector)
" I! h1 l+ U0 R% E0 [3 D/ H: Z" h- p# L' ~+ }8 F' T$ v. w+ h& m( A6 U
在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:! h' W/ u) i& t/ P* J. g$ f, v
' d: n- T$ x- {6 y
0 O% C% @' _0 W3 \4 w4 o* C- z, j3 u1 N; Q' p( I8 A& C
$ I- {1 g3 J% M4 h! L" d
2 u3 u% Z/ k4 H( Z) Y2 S8 K0 a* W7 q i
核方法
! u: P: V2 U" S7 A7 l6 o5 {
- K q3 j% I& @) B5 \- } V7 U
4 a% c2 e9 B! J( y1 l8 ^7 M+ ~8 R) `+ X
8 ?3 m6 V% w2 S
4 h! g7 s- U0 @8 G3 [$ F/ B/ j. A
以回避内积的显式计算。
- c/ n/ O) t5 z6 q7 \) X$ \0 E. R* ^
常见的核函数:
- T4 V/ g/ V8 B; q) E. ^; ~
: ?) i5 i. _4 g0 }
O+ g2 n8 ~0 T( i7 N+ z9 ?, w9 J5 N% r# {' R; [" i
kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
4 f. b }3 `, ~1 H1 W1
4 k7 y0 ?6 W% ]# e- f0 x当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。. @/ o3 H2 d' i, }: j
$ p$ N2 q( y( m! }+ z& h: `+ K/ H& _
SMO序列最小优化算法1 v6 [9 o" c3 `3 g% g
. V! W9 Y Q Q. K. _5 `' X
$ p) z/ a* @ A8 [8 j0 u! v4 N, K/ \* C) `; s7 ?' C
) D3 E# }5 y I$ |5 O( u8 U9 N( t8 G% ?
: d8 d$ r, A- Q4 G% B4 T8 Z& ? Q% [) Y
三、Python sklearn代码实现:
; E; g7 |, i. |" }6 Z
4 _- }$ @% g: B9 [) {sklearn.svm.SVC****语法格式为:
# G+ R4 h+ v8 w; I3 C1 G
9 H6 p2 f. M5 l) y, b9 }class sklearn.svm.SVC( *,
3 W8 ~6 }6 E9 @; _) M# l C=1.0,
6 k1 D3 g* _7 G) I kernel='rbf',
( ^% ~) h$ e* m0 {3 k degree=3, ( w8 S( F x/ m, a2 u i
gamma='scale',
7 \+ _& q/ w3 W& N" L% B coef0=0.0, 9 ^' o0 N k' c' x1 g y
shrinking=True,
9 g$ [$ X, I& `: i2 Q" ]( C, m probability=False, 6 e, ?, l+ Z* _# }* Q/ a
tol=0.001,
Z% @4 }6 p' b8 z! s! O cache\_size=200,
% c3 Z+ u2 i$ P2 p: }3 x- \ class\_weight=None,
& q6 ^0 ^9 @6 d! P; G! a/ y! H verbose=False,
) p' k* p/ w4 k/ f7 T4 J Q max\_iter=- 1, 6 q! x; r* P; [8 r( C) I
decision\_function\_shape='ovr',
" h2 F* K( A# b3 h$ O& A7 @ break\_ties=False,
3 e# V0 i* f" s: U& U random\_state=None)3 M4 W0 t, X. B! Z+ Z$ P
j; S3 s6 R: m. F. x
1
, S" T: e, F% p$ S2+ f) m3 ?7 m; P. i: R0 ]3 u$ V8 _
3
1 P' f$ m0 I5 W' d8 {4
: X$ f1 c2 l8 I5
2 t, S* n3 f- A3 p65 j, q+ W3 y! a' j6 w
70 d& p9 D. a. _ d
8
$ H7 w2 e, C _. B. ]% A+ R90 L- j. S5 x- G; {1 C. b
10
7 ?6 C0 F8 c- M11
2 t$ K, S4 H N" v12
* C" N8 C% N* {1 z" t$ \13! j. j* f% F7 {: N
14* l0 a2 x0 e/ I9 r. S8 k
150 z6 H1 _# a+ K0 ?( ?& y8 e
16' w& c, @0 q0 d' s7 Q
基于鸢尾花数据的实现及解释
6 G: }" L8 y- e& q+ j0 G
- r' v3 s% R# y* A7 R4 J( U代码如下:. }9 h0 Z, y% h9 d
: I; f- t! m; Y" o* d
1 # 导入模块6 i2 d- m5 m0 S! U
2 import numpy as np; r0 {+ q S( x3 P+ X! C) j
3 import matplotlib.pyplot as plt9 {" Q+ K; R/ a7 z' o4 G0 K
4 from sklearn import svm, datasets; c0 o" b' Q% @+ D a' m
5 from sklearn.model\_selection import train\_test\_split2 T, c" A$ V/ {" u
6 $ J4 l( Z3 t/ S
7 # 鸢尾花数据
3 E7 @3 Y9 J. |% m/ s$ q7 P 8 iris = datasets.load\_iris() #原始数据. B) C$ q/ o" [+ A
9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)+ C/ E* P$ r5 d' q) J
10 target = iris.target
; y$ ^, c- z; O. j a11 $ @7 `3 j9 r S* S# E- k- I/ V. x8 O
12 #数组分组训练数据和测试数据
; A$ R- D* w3 [9 i0 p/ M3 X13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)# p; Y# r. I( U3 e" P
14 & P+ m w" r z3 `: N4 v3 B
15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
1 }" h: _+ {. u16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t6 R1 ?* z3 v; E8 a# R0 u
————————————————
# ^4 G6 y4 {0 r' {8 A2 P! m) ?( o7 `$ V版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。' S- U# p! p* R; ~% Y
原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
9 g" o e3 @; z: ^# g& e& f1 g0 D7 R" w* D6 S
! m% v1 i. o7 a4 m
|
zan
|