- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564709 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174636
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
支持向量机分类算法
( P3 b& M; d/ s% m- H8 ]0 }1 O. H7 @ {* z& P9 y) Y7 e5 A! Z
🚀 优质资源分享 🚀5 }0 L$ @0 G( u7 d
学习路线指引(点击解锁) 知识定位 人群定位9 s; s: z+ F# {
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。: {) L' l l6 [/ l8 k f
💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 o6 Y0 R& T1 k! G0 G0 D
支持向量机SVM
1 b) A4 V* T& j( `5 E* m' ]
+ n7 ?3 Z7 `' x; @: h0 ~1 d, D; i# `+ G支持向量机原理& f" k: O+ N" B' G& m
( j$ \5 f- W+ p$ S( u" S/ |7 r
1.寻求最有分类边界4 ]& {( }9 O! H2 }2 s, n' {4 R& y
" k# D" k1 Z0 U0 I正确:对大部分样本可以正确的划分类别
, P* g" Z2 I/ M9 H$ h
( T0 [( q1 F7 }" V泛化:最大化支持向量间距
# W' N. u* g& S. u$ P% D$ @1 y7 w/ E4 \9 Q( ]
公平:与支持向量等距
5 w9 T& j E, H7 `8 n! w/ Y( P& p4 O! H$ H; `: ]
简单:线性、直线或平面,分割超平面- {2 x T" z: _; ?/ A& W
: C' V* r. ^9 g2 K1 `$ q
2.基于核函数的生维变换, ]* V/ }# G. f) a3 h
- {+ R- B8 p8 K' `通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。: q5 q1 H( p: \9 \3 k
O: F$ v" O% V1 B( {/ \( n3 g/ g( e一、引论
3 _+ ^; F1 ~0 l3 K% l0 N3 ^' A2 N( n( @ ^ k! Z1 X" V
使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
, E/ l& C) n0 {. {- ~5 e$ q9 F( m: K; R3 g( |
2 [7 E& x2 S2 w' T( D8 x( b' Y
Y& D* X( ]; l! t7 k
现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。, M. X/ D0 `' V7 j @4 M
5 _: K: m z" |
我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:. I4 O% `: e& t( ^
7 V' M' `7 Z# t/ F" C+ _8 n9 X' A5 @
二、理论铺垫( |& u2 m- M2 M k: f' C
) A* W3 b7 P7 _3 T' i$ {! e( I线性可分性(linear separability)
2 [- [/ Z& \% e: n/ X, T( [/ ]! I/ s( p& T
; s* u | Z+ n: A0 |- O# u6 n9 E
5 l! Y) f [& U% y; I% x6 H3 g而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。3 \4 E- H; L: C' w( m3 o- W8 O% `! f
$ I% w$ l) b; ^+ Y; V6 x
4 L- B- G& x# ?! ~0 A- x1 Z4 L8 V' I$ ]+ x3 x0 E
决策边界
/ J8 ^& N2 s. [9 n6 q+ n6 W9 B" A
$ ?7 }: }7 m7 A5 kSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。5 X4 i8 p7 U* f0 `% s
5 `+ h* Q/ F1 P- @( z( e' @0 u
& n( j6 l+ C6 H, u0 `7 O7 y6 @7 B7 Q2 o4 r% U' s' i
总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。0 o" r j/ _ p6 |- N9 i, U) b
- o" u& T& v4 X7 }8 J/ |支持向量(support vector)
7 P+ @4 D4 ~1 R5 D" Q! _
4 e* }' f% ]6 L A. d在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
& H8 y/ M) y: w9 ? ]- Y+ P# `& u5 Q; q8 o
A `& e4 ^; O; r5 b+ H' f( x3 M( O' _' c# O& a. S8 U
. H8 T/ e! R3 [# B2 d" X0 i2 `
: h$ x, c% F; u8 X- o
核方法9 `7 V2 E* h/ E( V+ s, g
: _0 P9 i- {+ a" p: r4 ?2 ~
, C* y+ e) F" a! ` d) l% v" D9 V2 u9 n$ \% Z
) A* _/ u; z; l/ V N9 G
' M: L4 \! Z0 O9 d. s2 f- s以回避内积的显式计算。
/ s, o; @, @% R( j
7 h: u$ j* u) r" d7 n常见的核函数:
4 q! P8 x7 l7 d, d" j+ }# ?
3 q" w; j, K1 l6 G: M+ M
' g: K( e ~' ~+ z j% v& C# n' T5 G+ G" g: a9 \8 l5 H
kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'( L" K. e) w1 @1 R/ e
1
0 {2 G5 Z5 y; U2 m当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
& l" S- h0 A! U4 e, M
7 ~' w, ^/ ], Y- i0 J# D) u" _6 GSMO序列最小优化算法! \! E4 Z, e; y/ n! P# O! Z/ @) z
$ u" @- c0 k9 H* Q* f4 x" w0 Z8 @3 Q1 e
$ q: W% H* n7 K, t+ y+ L
, S8 d% x2 u4 ~# o7 J, A* D V- S5 v ~8 V
( d2 m+ F ]1 A1 ^
9 D. `* ^; B" c; M% c2 J/ r三、Python sklearn代码实现:/ H+ b) {. p V1 |; @1 }7 s6 g
$ E5 J" r t1 m. Z/ ~0 n0 rsklearn.svm.SVC****语法格式为:: h" a" D- k9 q# y/ z. f8 a
' W( e3 O, \7 I( I
class sklearn.svm.SVC( *,
: \% K5 o- N2 c( i6 E& x" v! b+ p6 Q C=1.0, 3 l& A4 V1 T9 s! O# |
kernel='rbf',: @3 x) }' T) D1 S0 J
degree=3, U8 H( L' s! A9 E4 j+ Z
gamma='scale', 6 w, k0 m! R9 x
coef0=0.0,
8 A( U& @' [% e shrinking=True, 6 ^6 F" m8 D! }9 ^3 e. D
probability=False, ( V% L% q+ Z. q
tol=0.001, 0 l2 `2 C% M) r, A
cache\_size=200,
' A- U% r0 Q. t7 }# o& \! a6 W/ N5 Y class\_weight=None,
; q/ D3 z( B' Q4 z& S# p: | h H verbose=False, 2 ^0 o) T* s6 T6 Q+ E
max\_iter=- 1,
" n2 \, K8 G4 D4 y# z decision\_function\_shape='ovr',
" V. n7 ^& }( v' E7 g break\_ties=False,
+ G, }6 [8 k8 B4 V% Q# E% {# o random\_state=None)5 Z7 Z4 j4 q, v- g" m; K
, e% y. @6 W- M' J1
- w, r% d3 I1 S- o0 t0 h8 m2
' R# k: t, _. g4 Y9 g: w3- E( g' `3 q( M
4' b" J: t) @7 r- p
58 i* M, ]8 p5 G# p
6
) p/ y9 f1 J! |0 Z7% e) v# _. m3 L# n, E
83 w* q/ e" }* G, y$ h
9
4 d; u$ b2 d& J* p10
# N: `3 ~8 t' j6 g$ n) j" s11- l) ?# P( p! y$ ?, V/ F5 c2 f
12$ A$ r' g0 t {& r* U8 ~4 d, @( _
138 m. L: i$ m7 f" G9 D8 G$ o* k4 C
14
, ?4 b3 @1 w3 m) s15
2 f7 p i" q" c/ P8 f" Q% D16, L! S% y4 W l9 a& O; u
基于鸢尾花数据的实现及解释
6 u9 e$ |7 i( v d% c# [) V9 G# L% l9 U0 c7 d+ B( w
代码如下:. o8 r5 M: f6 o
$ ?% B" P3 B2 p. S* V' c. Q+ w( m
1 # 导入模块8 [! w: R; U4 B. R! z
2 import numpy as np
( {! p& X6 n6 t, f# k* F 3 import matplotlib.pyplot as plt
$ @1 G0 t) v$ s# i2 K 4 from sklearn import svm, datasets
4 c3 y S: ?) y1 J( F- n 5 from sklearn.model\_selection import train\_test\_split2 K. K4 E0 {: u+ Q# [- N
6
% H7 D' v* J/ k& W3 Y7 u6 Z 7 # 鸢尾花数据
3 Q7 Z1 s& t" C+ }8 m i6 x 8 iris = datasets.load\_iris() #原始数据; W% O$ i1 X% Y5 t! Y( x
9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
: R2 R# r) s! X- e4 p% {; l10 target = iris.target
: n& k5 i/ x* r# S/ V$ E11 b, S+ X1 a: @4 X8 z6 p. p( w
12 #数组分组训练数据和测试数据& y. w$ L* y+ g% u( c/ q
13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
) |( @0 y# |; W14
7 P% ~. V2 k# F7 z4 C15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist26 M8 c0 S2 p0 B/ l- |6 e, {9 ]0 ~$ Y
16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t$ k4 q# G0 N) s2 j* z
————————————————
# c. Y8 Z7 c3 c. A9 L版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
" |! W/ V+ N8 i% ^. B原文链接:https://blog.csdn.net/qq_43479892/article/details/1268117916 _4 ^5 M/ Q" O0 d& U' o2 c
}* w: c7 g) D, J( m' ^- {
0 Q9 \6 S% A2 [: k9 ]+ e) ]3 @( t |
zan
|