QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3248|回复: 0
打印 上一主题 下一主题

[其他资源] 支持向量机分类算法

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组: 2018美赛大象算法课程

    群组: 2018美赛护航培训课程

    群组: 2019年 数学中国站长建

    群组: 2019年数据分析师课程

    群组: 2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2022-9-13 12:41 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    支持向量机分类算法
    6 b5 L: {- V2 D+ u, s
    $ A2 S+ s: s/ l- y' I  q5 f" M🚀 优质资源分享 🚀$ V0 F( B1 C* J, R& K! h
    学习路线指引(点击解锁)        知识定位        人群定位% U0 h; y4 T! K; f" j
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。/ W6 c& @2 {  Y; r6 v% I! T+ x1 e
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统6 Y4 i) l6 A( E; [+ t% Q" X0 \' ^
    支持向量机SVM% P4 e# k. p& k

    / \& S/ J. x$ {7 V- S! l支持向量机原理% |& ~: W6 l/ M, F
    8 [+ y7 `  L. ]' \% C. }
    1.寻求最有分类边界
    % m# f- Q  w$ Y9 o- x* j% F. l/ P: n0 j# S7 T( X
    正确:对大部分样本可以正确的划分类别
    : i" q) A0 n: z; |7 c" k
    & [# J0 b: Q0 G7 \% H2 }; J" i泛化:最大化支持向量间距" }5 Z: f8 f, R

    ' d6 \) Q8 `: k1 Y4 z4 t8 o9 {7 D8 V( c公平:与支持向量等距
    5 B  I9 Q3 E0 g- K2 i, D' L; D: j4 r( u6 N& {/ n0 V
    简单:线性、直线或平面,分割超平面
      s2 }2 _5 _8 h7 p+ W
    + v5 m9 h/ w' g/ s. j7 H8 q2.基于核函数的生维变换
    & l% L" \3 u+ d. b5 K' w4 d) c9 }. X8 m' b$ @( W% L; l
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    5 D- m$ |* Z3 c/ U, L) i
    & y. b9 G( _6 a一、引论
    5 M) `+ s/ d6 c0 L: [0 G5 |
    5 ^' n* Z, M$ N# Z5 R使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    ( m5 _8 o5 O& X% o( f& Y" p( x/ z3 O' M2 K
      W3 C# K7 e6 s4 j9 j" m7 \3 y

    0 |: C- M  B6 V% v/ L现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。7 p; p5 |1 p$ m% M
    % e# N' W! b4 I, x+ ?( V8 g
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:0 s0 J9 K# {1 c

    ) I* W& \1 g6 F  m/ D! _+ @# t) I二、理论铺垫1 X5 T$ Y; \% o. j* O

    7 H3 E2 U* q! G线性可分性(linear separability)9 V7 E7 D0 I' j7 T' H$ f4 M! h
    1 g5 t( P  _! ]( _; V

    4 x! U" ?, [9 O% a( T( p3 K+ r1 Z8 X: e
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
    * |2 E0 e" d! w$ F: [& J& Z: D6 u) x! E# r* Z* z! w/ k
    2 o2 o! T( O, X6 ^2 U% k
    : X6 U; h4 A) [* d  q2 A- Z
    决策边界
    7 V+ ]9 B2 U6 I; T" y$ s6 B2 R3 w' E, N; v3 Q6 k
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    0 J& H2 R0 _8 {5 a$ P  I6 T* a& ]0 Q8 ?( e6 s

    + w! Z* Z& r- S8 ~% q( a( v, g& d, K1 H9 w
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。8 q  U: c& \* u7 y

    , _" j+ A, z6 B8 k支持向量(support vector), J  c# }$ |; h& q, [

    9 @7 g+ I4 L7 G# c' x/ D; M* n& n在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    & @* p; U: R0 M% b) z6 }* s
    " k8 J3 e/ |: ?! z9 g; v9 \8 o; b) D  f' E/ t7 P- J

    9 N3 i7 m  U# q7 Y3 T. \/ P: Z+ Y* _, i( E: D* A

    " V" M* J9 b! B1 ]# h. y8 F: K核方法
    7 w! c$ s5 H. k- p+ y. |$ S$ h5 X

    5 A8 Y. n7 q7 d: e
    ( v7 M/ i9 t6 h& t$ y5 Z! @
    9 f/ o4 H, U/ S! k- i8 O; j" @# M/ f! w
    , y2 \3 ?% O+ O. q以回避内积的显式计算。; \. B9 b' V% w; U/ _( y

    & G. {$ z  ?% s2 n# \/ \5 P8 \常见的核函数:
    4 w$ n' e# b4 D" K% r% Q2 ?8 V" \

    7 l7 a. O6 W' A% i2 h) C, h% ]0 p. v3 I7 F
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
    ' X4 R% ^  n. Z, Q* R9 n% J1% R$ ^( R, s" s4 f! d% @4 I
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。- ?0 O' M0 q! [5 w! e( g
    7 r- X* k: o$ ^+ w  Q# K* N
    SMO序列最小优化算法
    7 m/ B. ]. x5 N1 }9 P( `7 D, P
    ; b7 }( w- g! W2 i; C/ O: D% E
    ' D; @' }8 N3 e! r# C# A/ G
    & u0 @8 }' K; y! `' [1 O+ D% P$ [
    * ?9 J, N: k0 E4 @* D
    ( k* d5 q+ Q* u5 J
    : f  K6 a! j* @. E- {) i3 n
    9 p3 u. f6 i1 o1 _, F三、Python sklearn代码实现:4 Q$ x9 C3 @7 q, n! M
    % `7 p4 d7 V* O% T8 v/ o7 l# P
    sklearn.svm.SVC****语法格式为:
      L& E$ M3 r% x' O8 N0 G" C6 k3 T/ G) O: j& n$ x# o: z
    class sklearn.svm.SVC(  *, . u: M3 N* ^) e( l- w2 \
    C=1.0, ; |) v, h! D6 `$ Y0 u4 s8 R, |
    kernel='rbf',
    ; e8 b7 ^! U$ y% h) F3 f% l degree=3,
    / c+ n3 s1 a2 N( {! y. W6 d gamma='scale',
    . @5 Q/ I) t0 m' Y( |* K1 c0 H coef0=0.0,
    : n5 ]. Y5 Z9 @* c7 I shrinking=True,
    " r  C; |# U7 b4 m1 ] probability=False,
    ; G: y; H3 X2 h3 `, ?, U: K/ s tol=0.001, - c* u) G1 ~, w, o
    cache\_size=200,
    % k5 a2 E1 M% p. r) h class\_weight=None,
    2 J( F+ c1 ^6 `" n4 \ verbose=False,
    % R; Y0 i( u1 y# A5 y max\_iter=- 1, " }& ]% }# u/ a/ j, B
    decision\_function\_shape='ovr', / U; }) d* |& p1 m
    break\_ties=False, 6 _5 O1 m, s1 I/ p, j- I. y
    random\_state=None)
    8 J( U" b( L9 g3 X# F
    : E; Y/ ^' t8 q+ W1( @6 v9 d) E! N2 \. }. y
    2
    8 d0 v0 s. A. N& ^2 U. U8 ~3: K9 N1 p; U: G( n) \: m8 ?. W# n: _
    4! ~7 `9 C' @, N1 @; k
    5
    ; j9 |7 j# |$ J0 W6 @4 b$ S. U3 ~/ r68 l6 U+ r4 [6 W4 J6 t
    7
    " E1 a2 F0 o( u3 [8
    8 v9 y# y7 j& V! w, q9
    * P) Y* i% B: J. F: I10- M) a. {7 Z) v
    11
    - V7 F( z* x) I( S( s: k6 B12
    0 e+ Y; c4 F4 P! D3 O( L13
    ' i8 f0 v% \: A$ Z: G14! j- D* q, O% b  j* f1 U# p
    15
    % D2 u* R: a- E+ L1 x1 W! [( u8 \167 z) |' F! e' ?8 h0 G: F0 N
    基于鸢尾花数据的实现及解释
    + P; p2 x2 r0 c5 F/ Y2 V
    5 a( i6 U0 B* L) d2 E: ~, ]/ k代码如下:
    # F6 k' z5 v! Z- r8 B! n1 h  O
      p, U9 C8 k& p$ |$ `2 ]  Y' ~ 1 # 导入模块: X; z+ d2 u! G; `, _( M2 @  N
    2 import numpy as np
    1 ]! Y& D8 s+ m9 A5 m 3 import matplotlib.pyplot as plt
    $ Q/ {$ s  r9 `' S 4 from sklearn import svm, datasets9 q5 G! V6 A. Y& J8 e+ ?. M; M9 Q
    5 from sklearn.model\_selection import train\_test\_split
    , D' B2 Z6 D! T. d) H; j/ O) R 6
    ( A: t) V. |% p7 X/ {8 ~ 7 # 鸢尾花数据8 e& m# v3 u8 W. v
    8 iris = datasets.load\_iris()         #原始数据+ t! y( e% c6 d5 ]- L, [9 d
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)6 }5 v+ u" Z8 U# b( P; @1 X9 d
    10 target = iris.target
    " y* h) j6 d8 a/ z: k8 q6 Z) }11 + r# Y, q8 J" P3 L
    12 #数组分组训练数据和测试数据8 E. i& f& N  z
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    $ r% F/ l/ e' [* `) v  P14 0 b9 n& d* G. S5 ^) i- i
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2. b0 v: X$ S- b$ t
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    : A1 |. s$ _( F! z: X————————————————$ G, a1 R! u$ o9 q  h
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    0 h: v8 U0 D( r/ x原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    7 z  Y! L4 a- [
    * q% H. V; ^  }! @0 g1 Z
    9 I4 T  h6 A* }; I% A! w5 w
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-10-10 05:38 , Processed in 1.547465 second(s), 51 queries .

    回顶部