QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3161|回复: 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
    支持向量机分类算法- g7 t1 t2 ~4 O9 X

    # f5 f! [( N) ]🚀 优质资源分享 🚀
    , P3 C! ?5 l& {1 y6 M学习路线指引(点击解锁)        知识定位        人群定位: P( M% }. F; A4 l! `& E
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    3 V- t; U% ]2 R0 F0 _! d&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    8 M2 Y1 H/ o9 K2 F" }: B, v, V支持向量机SVM' }; r( C- [- T6 s" |
    * e. k- g  ], z9 g0 [
    支持向量机原理
    5 _$ S/ ]' h; x7 ?$ M# H7 Z7 q3 [& X- u7 @0 H1 h8 V9 i' f
    1.寻求最有分类边界) Z/ A/ J5 V  Y) h' G
    1 R1 c1 R% o3 h7 _  |* ?' P
    正确:对大部分样本可以正确的划分类别$ Z4 X! K. o* r3 ]% K  {1 s( }+ t
    * i  W6 Y" u/ A' ?( J. N
    泛化:最大化支持向量间距
    # `. p" W5 h$ g, g9 }
    7 S: N. t  g0 y3 b% J& F* f公平:与支持向量等距
    , W0 Z) M% \" Z' e* ~
    ) C% `1 g/ f* ?简单:线性、直线或平面,分割超平面
    6 F; o% f( q4 R' _* R' J
    " J- B( [* U, f: |( {2.基于核函数的生维变换: w- v6 w. S3 V' N- }' |

    4 Z: `; E' i8 A* e, v通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    - u0 B  M6 `! B/ @
    ! D# b5 y+ q! f& B! T9 K/ c' _一、引论! i; ~- N* S9 Y; s! z' j6 q0 {0 V
    ! r0 Y2 U: f# u/ z
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:0 t4 _; d( o) j+ f  f8 s9 k

    : Y5 W% d% V+ z1 H; S6 r% z/ ~, k- b$ X- H( |, V
      q9 X# J$ w' h% s2 \
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。9 x% N. e8 t! ?# S. b# G& U0 M
    ( Y3 {# |& A" {' C9 h
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    ; W5 @/ J* D/ Z
    ( h! t2 u$ m" f. Y0 @& W二、理论铺垫
    # u! I' u+ ^# Q6 i& c& ]" |( R6 F$ G3 o8 q1 _
    线性可分性(linear separability)7 l4 l! f8 k+ N1 i  w

    5 y8 s4 C5 D" `# i6 @
    ; N( j* z: H. E& v1 j; u$ n9 V0 N2 g- i# {# e# e( c4 k
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
    $ }5 Z% U  }# O. \- g% X$ h9 c# i6 s/ C) a* E
    1 P% j0 n, [. Y; G) D

    / r7 t# s; |# m# }3 J  }决策边界
    % x2 ]( x: a3 W
    / B( R! G& \) c0 S2 O9 A6 Q& `1 K4 wSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    ; s( c( q, U/ S0 E1 c8 t* e, J- _5 n& e2 f( a) |; {

    1 k) T4 F$ `; e6 \  U4 N' @
    ( R& R) v# P' R% ~总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。' ~' ?! I4 X0 Z8 ], i

    9 F$ B& F1 ]- C支持向量(support vector)& Y* _; B+ d2 a+ _$ z  R; Q. @4 f
    / I8 H; ~0 ]- c3 l$ e
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:8 }. r% q& A% \+ @
    & |% T7 @9 P/ K8 ?8 r& C3 V

    3 i$ D6 G, d9 ?* Q3 }- q5 `) X
    8 P' Q, O" P$ K+ q8 I3 r! E; a4 J# e" K
    " z5 U. p2 a( K3 |% d9 W: E7 J( {7 R
    核方法
    . p1 @* ^* }* Y7 m- L' x/ t# i- u% e2 v. |8 y
    0 V* L8 a; s' u6 n4 a; L, E4 O

    # \& s  v9 ~4 |" G, d( x3 B
    2 z) o# F4 o6 A# p1 D
    6 p5 c0 z0 u& R3 O6 C以回避内积的显式计算。
    $ v6 V! l  _) \" [, U! ^) W
    5 p9 Q' j4 c3 A% w) N' |常见的核函数:
      }, v% h* M5 c* ]" W8 |$ C3 S! |; l  p9 B+ m
    & x, K) c( O% g, I8 [
    ( k- @# J: W) I: c) l/ M  G
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'* e6 [* M1 V# I* V) m% W
    14 ^# L& z$ s" z. q
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    3 G8 M8 y) i) \' |2 J" J2 y2 S+ f& M+ W7 w$ w, A+ z# U
    SMO序列最小优化算法, f% O8 I4 a& D# k7 q5 C& z
    , u9 C/ d; x) ]0 C1 f6 x
    " q" g7 Z7 R% p2 {8 |
    ( u9 w! `; r6 n& h3 i

    5 ?) T' @0 h% d- C  f2 s: T5 M; N+ q/ W- O7 b

    . O4 {; Q: V( i3 \* b" ?6 Y0 ~7 W& j. N4 H4 C& Y9 M+ D/ o
    三、Python sklearn代码实现:; j. l1 \0 {; H  s4 J. W( O
    ; y6 R5 G4 t% i2 T& X) l
    sklearn.svm.SVC****语法格式为:
    0 M- F% s5 `  j8 u4 \# l
    5 V$ T# H! V& u$ L: q! fclass sklearn.svm.SVC(  *, - ?4 m" r7 f$ C) @( h& v
    C=1.0,
    ' S: j0 i" t! ?: ~! Y kernel='rbf',
    ( c; s$ L5 T6 ]% U( q0 D5 W1 a degree=3,
    1 l& F* U# z& m5 h7 c* \ gamma='scale',
    # F1 h* w- G8 D, [. R coef0=0.0, 7 V6 ?* R. Z' S$ H+ [; H  |; J; t' a
    shrinking=True,
    6 o. J/ y9 T* [  x probability=False, % C2 Q! w( r9 X: a1 e4 ?# x% F# ?
    tol=0.001,
    1 u6 s& j' ~/ S; o* _6 D8 ^. D" A cache\_size=200,
    1 ?4 u# L, y  } class\_weight=None,
    7 Q8 D( G/ B. B2 K# N/ X' K verbose=False,
    : F7 v$ A# B( X: A6 C max\_iter=- 1, 1 F! i0 o* K( o6 O$ f- A2 r
    decision\_function\_shape='ovr',
    7 E3 u' w' K# b break\_ties=False, - ?2 a/ Y7 u- t; {
    random\_state=None)( |0 ?0 C6 b* h" u$ x# m; M

    : o# i& f! f' {" T1  m4 Z/ U8 _, B7 q+ ?: C( n# \7 J  J7 e
    2
    , E. i- y% b0 V& {) x  Q& T3
    ' ?+ y: E0 c$ B3 R  r3 Q9 A4% {* e9 r  ]0 m% [
    5
    8 k8 r3 ?( ]& K* ^* c. t6
    9 [) S! G8 n; X3 Y  M4 [: M4 O7
    " D  M+ ^$ V2 p8
    ; D4 W" L: s+ G3 `9  R9 m! G6 }7 t6 y: x9 J* l; X
    109 J  s7 x7 ]9 _0 d# z! J* {9 a
    11& \9 `( {: q- r  B. ?! o2 n
    12* R1 L+ M( P. b. `; z5 ^  q
    13
    9 ?1 O" q# e) l14  }; c) {/ J& u% u/ N1 y% e
    15
    $ G3 L+ P, e# H' U8 y. K) q16
    ! a% p& S5 X- X! S0 M$ _& p基于鸢尾花数据的实现及解释
    + W5 ^4 r2 B4 M
    4 v2 B& X* q8 R  G, J9 f8 ]代码如下:2 [& d3 {5 S. [0 l- R, D
    6 D. t" ^: n4 R: a/ k: f3 o
    1 # 导入模块1 C/ a6 Y) l1 K: \$ d. Y5 }' J
    2 import numpy as np
    6 B6 n3 c' r- m  c  i2 T 3 import matplotlib.pyplot as plt6 O0 p' |6 ]! h! a
    4 from sklearn import svm, datasets/ x. o6 p! m, C. L
    5 from sklearn.model\_selection import train\_test\_split
    5 F: n( U6 [" |2 q: S) Y) c( u 6   d4 U% C2 F4 o7 D% [; _
    7 # 鸢尾花数据
    ) J) k4 n% R. h, }4 |+ S) D' H 8 iris = datasets.load\_iris()         #原始数据
    1 z* P: J4 O& y) r! o 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    & E) b2 V) g3 c8 O, j10 target = iris.target
    3 F3 l" r. b# P8 S. z: c" T& U1 N11
    3 y/ J0 ^/ p3 U. W3 P, V12 #数组分组训练数据和测试数据
    # I8 L8 y+ T5 k7 @- r( P  `; q/ m5 v13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    2 U) x9 s8 Y" t# _( n" M9 C; _- ]14 5 m( d7 m( s7 t# M& J/ e" R# B
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    $ e+ p! ?7 |. Q9 M# U16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t+ y3 \/ U" E. T  Y6 o  b* U
    ————————————————
    $ z( P$ I6 \. ]/ `' c版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。& a' o9 @' a3 q% m# }6 Q3 M
    原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    ) c- u  H; W( A, H8 i; a- p8 h- ~3 |; @9 H' K, r4 l

    4 @6 i  k% ]& U
    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-6-13 14:08 , Processed in 0.342601 second(s), 51 queries .

    回顶部