- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565164 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174772
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
支持向量机分类算法
' ^: t$ r% B$ B2 v B" r5 ] J# Z$ s; B1 j- W' ^$ L, Q1 ^/ Q6 X& U; V
🚀 优质资源分享 🚀
1 U8 \' m$ ?) D+ V, d% v$ x学习路线指引(点击解锁) 知识定位 人群定位
! J! P+ P0 b @8 P! s; ^🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
* O/ j8 O- u* O2 ]: {* H* n: b1 Q💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统2 _" S5 }2 L; s" v9 L
支持向量机SVM. d* q6 w, ]7 s0 }* K- e
3 N, I' |: l0 A1 d1 j3 e
支持向量机原理 G+ D0 G. k4 Z) l
1 \- T" w$ p! U* u7 p
1.寻求最有分类边界4 R% b5 Y; s4 m5 ?# {0 e+ l1 l
8 W( M: F9 h8 u+ ~* P& D$ _+ x% J, _正确:对大部分样本可以正确的划分类别6 H% q7 r# w! E6 G
! ~7 k1 ~3 o8 U泛化:最大化支持向量间距
; d! ]1 h. M% ]# a
O2 b4 F. k J. s0 r# r$ `公平:与支持向量等距
' ?- M# U. }- @+ {& a
! y& a& k1 ~& S- V7 K+ [7 k简单:线性、直线或平面,分割超平面
# l3 D- d7 ~& N- L; Q) l9 N8 y# D, Q5 a" R& W+ T# Y R" j2 J
2.基于核函数的生维变换
, J$ g' C% ]3 f: K/ p( w2 Q$ R
# b6 r' L0 d6 r' m% x通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
+ \# w: |0 O. Z$ X! b1 R2 Y
; A( E$ m( V* O一、引论
) m& b$ T/ u$ z: I4 W. ]! u% Y9 R) E
使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
: ]& f8 `; r2 s5 ^9 Z7 F/ G$ S2 q& |/ n. Z. m
* G. r# o: ^( W; g- L8 A# n
( P; U% {4 K' K
现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。: N" G0 L# p; C! D
& ?3 |* Q g( g% f9 O& b2 V* w7 g我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
8 V/ z% n+ |5 c
" n+ P' U; x! J6 R3 j二、理论铺垫
/ W- _; g2 Z4 A) ^' i+ m9 l% V4 b
{) z6 w% v# D线性可分性(linear separability)
. @2 M. q H$ s; f5 I4 E! g# T3 H
! E3 a% k' w" X! d9 {8 g: k6 \ d; Z7 R
而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。7 w) W6 e0 k( y1 `8 A7 j" } H
( ~! k" Q) W7 I6 K4 L; H) y7 b6 {* P, O0 a
; Q# d0 G! R4 V E- ]9 g' N5 ~
决策边界9 d( c- j E- h* x" a' q
0 v7 `8 s8 M% P& }' ?+ Z$ I3 R/ V
SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
+ r: W9 E% a+ o# J! E
/ D2 @% y# Z1 j( s4 `2 Q
. h. n+ e# u E8 G: O3 f. m8 w6 ^8 x
8 N B. i# z( n# ^& ?( L总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
: c. ?+ \7 N9 C) e; |5 S
6 w" Y6 Z4 m8 {3 F+ `支持向量(support vector)6 E; K2 |) |. O4 r
2 v. P. X. U( L9 E, z( V/ Q
在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
; ?' k) r& W* n- Q
Z) y2 I$ t( w _* A8 K B
" }: J/ I: o$ B
& h6 ^) `1 d' X- O7 l! l# g5 L" l! n6 b1 D
7 L, s4 ~ M7 e% V: v9 D# K8 H核方法
, [; V3 D7 [/ g0 v
1 {0 ?6 K" p: {. ^1 Z+ P6 s" g
4 ]+ Q8 a s, {6 E d! R' E6 Z0 q/ q, [% T7 x
. b) _, Y& t8 x- E4 |
. E' U; l0 f! K( ^( F: ]
以回避内积的显式计算。
; h+ q/ e! l! [# C: h+ B- ^4 s& q: N+ o4 e4 W) m
常见的核函数:
% v# {: t+ Q: ^- L* t# O% j4 |/ R& H3 |! c! j' A( c
! \7 a. r+ }3 ?( _' s: u8 f, {2 J" n2 M' M m( q
kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
8 Q# I- i) H4 I# s; O19 G# T t! k0 V: W* H# M( m) S
当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
: ?) X0 K2 D# ]$ d( G1 k* P) F R* Y3 E, R* c. {: a
SMO序列最小优化算法: ^2 T* K+ @. V2 K: d2 j
+ J# u2 B, V, W; E8 N) d* Z
, R8 h; l& H* D) D
/ K+ H' ?- f: V7 p- I
8 L5 M+ C, ?% B1 \
" b2 [& @4 X; p3 l* |7 ?# ]% l1 g
1 W6 `; `: K) E) A) t( ^* X( @/ p2 p. G& E4 K4 G6 p9 b& E
三、Python sklearn代码实现:
# i3 ~. g, _5 _0 U# J0 e9 U7 h1 p, Q6 ~; o/ k: E
sklearn.svm.SVC****语法格式为:
9 ^2 y1 j* ?1 N$ S
$ d- N3 h2 i# I7 C- P6 Hclass sklearn.svm.SVC( *, 4 ]* {0 ?! \- N+ a/ l! g
C=1.0,
8 T* L# {5 H) N5 G6 Q: s) J kernel='rbf',
1 h; ~( s1 a$ x! q( c4 K6 ` degree=3, 9 D" g, M* B0 G$ i( m! J6 @
gamma='scale', 2 Z, c1 ~5 h& p: V+ A
coef0=0.0, . v) l# z3 |- B1 v& Q% a
shrinking=True, ( K7 q. m' h8 g i& V8 o
probability=False,
: w0 s- d$ k G; Z# F/ [4 M) g tol=0.001, / K3 W. k- E2 l& G3 E: M4 O
cache\_size=200, + a8 q, _. q. U1 \; K
class\_weight=None,
- H( \% D0 E" a5 z- q verbose=False, ; G, w0 N6 E% e1 n5 r
max\_iter=- 1,
* V% T2 f5 r- P9 o6 N3 { decision\_function\_shape='ovr',
' u8 [& e1 m8 c2 Q, _ break\_ties=False, + _ I: t O7 Q
random\_state=None)
8 Y% ~+ e" k: n& z, H- a, R$ Z$ Y
' x* b7 [6 j/ i5 p( S/ Q1
6 x- F u4 j5 ^) k6 j2
- M8 u5 r3 ^) m3 I! L! f3, E x7 C) @; K2 a+ w" L: s
4: U. t" C; A8 O3 v; E$ K, a- u8 J
5
- B9 \6 w! m! D! C# T# ^; [3 k62 o5 j0 W+ e7 W
73 G: C4 L1 q' t$ F
8
! e% g+ r$ Y! K. x/ Q+ {99 W6 }" e/ I/ Y, u
10) v/ E8 ^+ J& P, O; K4 j
11
4 ]: i8 x2 f/ o ^; O12# a; k% z# n# u
13
3 L2 |. O- l8 g- P' o& T14* y- I q$ P" A# o6 y
15
" Q v2 ?* }1 j! ?16
; e' t: `! |" e9 H基于鸢尾花数据的实现及解释2 n( g0 h5 }) H6 J- R
) ?2 z/ D; o& N2 [代码如下:& q& J4 s* m! z' @
3 |) c/ F3 t' |; B T
1 # 导入模块+ c3 G9 C9 [* R' P
2 import numpy as np7 T! D* a$ }2 n
3 import matplotlib.pyplot as plt
5 n0 _: B0 f. c1 f2 T2 L 4 from sklearn import svm, datasets2 m$ s7 M, Y5 F- w
5 from sklearn.model\_selection import train\_test\_split8 K5 v! L. O0 e0 h* Y$ t- ^: _2 m
6
* {4 z$ s) W& y1 a) ]! i" p 7 # 鸢尾花数据! M# e* l- ^6 M: i
8 iris = datasets.load\_iris() #原始数据- t' [ Q3 n0 n9 w$ D
9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)2 }1 M/ g1 ? t9 t7 Y
10 target = iris.target% F% m3 ?- T* Y3 y, d c
11 8 [: a3 H7 h2 s: w5 ]
12 #数组分组训练数据和测试数据
! ^0 G" x, ]1 F# e3 g( h13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)! Q' D3 {# T0 k# C$ |7 `: s
14
c! p. ?2 S/ y/ ?8 g/ N/ N15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2& U( b9 @8 J2 s ~7 M
16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
( }! v- y2 @7 a! Q: L8 c————————————————
. x$ R, f" w" s- ^& G/ h/ _1 ^1 ]版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。5 R2 x/ `, ?! J2 t' \! Q* l C* D
原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
7 v3 L* f0 j. c+ B7 J9 P [) J% d! Z4 F5 r* L
# H9 x4 E# B. ]3 n0 i% w
|
zan
|