QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3174|回复: 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
    支持向量机分类算法
    ' ^: 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&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统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
    转播转播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-7-9 18:41 , Processed in 0.420539 second(s), 51 queries .

    回顶部