QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3140|回复: 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
    支持向量机分类算法
    & F: X4 d4 z. G; A) J) q6 l+ Y! \, E  w$ u( g5 y; ?, [+ L& }& V# z
    🚀 优质资源分享 🚀. |3 w7 c0 e6 s$ _' s7 q9 h
    学习路线指引(点击解锁)        知识定位        人群定位2 D0 h# p" L5 w6 d! g2 M% l
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。  w* E4 S4 \0 p, o! o0 t
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统! z. M5 t, a# C9 [1 ~; X
    支持向量机SVM
    ) A7 g8 @7 {! g0 x8 v
    . {; e- B8 s- v6 O! c/ k支持向量机原理
    ( ~8 |% I" [! D8 K: `* a, C& r
    , T7 X2 X) Y- m7 j. c1.寻求最有分类边界0 @$ s  `3 q8 [0 \) o/ K

    . D# Q0 [6 Z* |3 i+ n正确:对大部分样本可以正确的划分类别$ ?: S0 O- q4 p5 G8 C' p# w

    ! I2 j9 N$ c, ~( ~泛化:最大化支持向量间距
    * a& S9 e- y5 A7 J% Q7 ?: _  K6 {8 c( X+ E' Q
    公平:与支持向量等距
    " Q- f, k" c# X8 Q* ~& r+ j* |& V
    3 P" X' H6 _- n3 ^简单:线性、直线或平面,分割超平面4 S$ y% V- ~; j. r& D
    ' f/ Y6 x7 `( M
    2.基于核函数的生维变换
    3 l0 V* n; D" H- s* ^
    : ~1 ]: X5 l6 y0 n3 ]+ w通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。: y" `; r5 k. @; g

    1 Q) K) z& i. y" Z一、引论
    ; v1 Q3 e# a4 e- A3 @$ h4 P$ Z) U( c: N/ L8 F( U
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:1 y  ^6 U1 u( j, Q

    1 G) `& a  T4 H) P2 d+ P7 x! _
    - A) T" ]* O7 T* |0 f: h& H
    - e, U) J! Y" A# @! k现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。& X7 ^5 e' \: l# U) `

    1 x! V  n" r5 L: }5 N我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    2 R# ]& f! v0 z- [6 Y/ t' M( t- ^
    二、理论铺垫$ m2 ?4 L7 R; ~

    + j# D6 S5 t0 C9 [. y( [0 H7 F5 h线性可分性(linear separability)
    7 ~  d; G+ V# c6 ?
    % [5 ]) }3 G( p2 g. D% G2 e4 b" Q" _9 _( I  c
    8 m1 f6 `7 C$ c
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
    ' ^# D3 S3 H* j6 a' [/ r
    $ D6 ^4 p) Z; E5 l  r/ S9 m& ?: O' W$ \0 B

    8 ~& h9 Q7 R5 e% ~% F决策边界
      H5 E) q* k1 u+ Z# J$ a/ r4 H/ b
    7 R& T3 i/ k& _& H% S5 ?. D8 NSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    ; a  S6 n- ?- f+ }0 O: }2 C
      T* D( X9 N# K
    ! x3 a. f7 B; @5 G6 G" Y: t
    1 V3 N6 z' G2 l' M总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
    9 s& I2 m0 l& F% u" u- a. j5 l# X: u6 {2 p( ?
    支持向量(support vector)* f1 j. _6 h8 a6 E! M

    3 v9 y2 J! [  r+ I. ?在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:  \2 N% t+ j/ u; V+ [) V0 Q

    % }+ @% `% \8 }3 F# I# @5 C; j3 ]9 `: [  W& F, t: ^- M9 ?- ?

    + v1 O: T2 {0 ?, j
    7 f4 R' q  _# ~) T+ r  Z5 T9 ]$ S' |1 x: D
    核方法1 I3 G! b& S& R8 k1 C% ^

    + c' g( e! |  C1 N
    - }* h, w' D9 _* r( \% j
    . a( h# d9 s( E& r( \' z5 j1 ~' {7 p7 {" Z9 }4 f! I0 r7 z) c6 U& X

    ' E* S- f+ ^5 r6 M以回避内积的显式计算。
    5 G* H9 K+ B% i, f1 P
    % g6 a% R6 J% X2 N5 p* @常见的核函数:% `& |0 Q6 O% k! B

    ' A! r. ^6 n! ]3 t( u$ b; C% r; p1 y$ ~
    * Z& K. T. z# d- I0 T: b6 d; `# N
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'" f% I6 E  y4 W# a, ^; y
    1( m+ }& _% q. b7 O1 x
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。# _6 I  I8 S9 J. I3 f. k* v4 z
    ) l; L5 {0 u6 ~1 ~# B2 |" u
    SMO序列最小优化算法
    ; @& Z: z0 ]& ~2 e& h. B( [( j! G4 M! i$ Y) ^

    , n+ B: N; C0 S0 y9 k
    9 d, z9 L# b6 R. H! o7 }' `; }0 a* p& [
    ) g* J0 w. U. q4 T

    : t& U1 {( u9 @7 k! m* f* i
    : v3 j5 W+ y' q/ `8 k. P" ~$ I三、Python sklearn代码实现:
    / r* @3 p" l7 A: I+ R: `. }
    - S; {/ u+ h" g! H9 ssklearn.svm.SVC****语法格式为:
    . `8 y5 V: z% ~5 k! H9 B! s/ h+ M& q! Q$ M2 }; @  U! c5 w
    class sklearn.svm.SVC(  *, / X! R9 @& d2 H; d% g8 R9 t2 ?
    C=1.0, $ \" @8 @, g. P/ V. F
    kernel='rbf',  ]* J, s7 t- |9 f2 Z6 q8 N
    degree=3,
    % w/ J# s( ^, Y9 F gamma='scale', 1 K' Y/ x  \* B- w& E8 l: B
    coef0=0.0,
    . e' F1 n9 S$ t3 n* W3 K& N shrinking=True, 2 B% j# o! k$ B0 l$ i
    probability=False, 3 Q7 ~; W: |8 h+ H  p* T' {8 F
    tol=0.001,
    + B; ], s9 d# a' ~+ ^9 E cache\_size=200, , H7 A  Q; q: o4 }: U5 t% i
    class\_weight=None,
    - `) g+ A% q& q' }5 a- m) p  Q. ] verbose=False,
    ; l! o; ~3 W# y( V5 I- q max\_iter=- 1, & s  f# G) R. f. a+ d% L7 F5 u
    decision\_function\_shape='ovr', . x8 A7 V5 j2 [) Q& i. {
    break\_ties=False,
    5 h# [7 f3 k% f0 }& V1 D8 F& V6 T random\_state=None)! o2 I- h4 j# w: ]  s

    7 _) G. p; m" G1' A* X. }9 R. a6 W6 M, V
    2) r( X0 m3 _( Z3 y  q5 {4 ~! C
    3/ [/ `6 S/ R. [
    4
    " e: }9 b% l$ u: R9 \8 H2 V2 {- [  ^5
    * a# A) p- R* o+ p( |' J9 A6) e5 D$ E. g6 U4 e! q' g
    7
    ) y; W% y! T8 {5 \* W. {7 H84 f" b  o* Y9 K  C
    9
    * F# U" s$ O) W4 ^3 Z  R10
    3 t1 L' ]# k2 t; u9 }* g& _11% s' N& S* a8 `! R& G
    12) e4 m, T: P% e
    13
    7 G9 b- }  d* ]# f3 v7 i  R14
    1 G  j$ J* \  N9 f4 s' Q% Z15
    1 X& q3 j! |1 W7 K3 D/ J# M16
    8 L: L6 q/ |  A9 K' |# F! `; A8 h3 k( f4 W& J基于鸢尾花数据的实现及解释; e1 v4 ]: z1 r
    * m" ?2 }" |. \$ Q2 T
    代码如下:
    ( M7 d. Y3 {7 j! l- P2 p$ x+ ~- }0 _% u& o0 ?
    1 # 导入模块
    1 c  A  b) T+ f- ~ 2 import numpy as np) E# a6 y+ `: B2 b4 X  d7 S* }) ^
    3 import matplotlib.pyplot as plt! x( m5 T# X( |  S7 n- C( \" _8 {
    4 from sklearn import svm, datasets
    4 r* K! [( A) t! j5 Z 5 from sklearn.model\_selection import train\_test\_split
    6 @; D0 {/ Z* w) \2 [) [; V& W 6
    " |  Y% f, d0 f% l 7 # 鸢尾花数据' A# P$ y0 o; b7 K& X
    8 iris = datasets.load\_iris()         #原始数据
    3 h( h; r0 F. s 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    . e; @, K5 @# H  o10 target = iris.target
    5 w0 R/ U4 r$ ~: c11 / [8 i2 z4 P. ^8 q
    12 #数组分组训练数据和测试数据4 _( T  b4 w6 X, `
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)" V3 n( T( n% u9 M8 \
    14 5 X1 H" ?" e" h$ l
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    # X$ f3 X. v% f( U, j  g16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    9 D! X; \" R( h* M1 r————————————————
    $ g" C2 s+ G" _0 M  ~版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。: P( R% M7 Y" `$ O  j+ P
    原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    6 m, a1 o2 q) n. I4 W% L3 a6 ]3 n- g* p

    + n" S' n$ n! ]4 c3 g1 o" Y
    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-4-21 09:36 , Processed in 0.427105 second(s), 50 queries .

    回顶部