QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3253|回复: 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 X- Z! d. _+ E, S% K
    6 b5 S- H5 L: x1 v; }🚀 优质资源分享 🚀
    9 X& P" X5 S. N4 |学习路线指引(点击解锁)        知识定位        人群定位8 J# y/ _1 K4 r
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    " b$ U, b7 `! D" t- o&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    : E/ d* C2 \/ c& u5 H4 J5 q支持向量机SVM
    # {# K3 D7 |# {
    , _1 l' ~; z! q支持向量机原理
    4 M% w" j& y) k) S" M
    $ k' @7 d, ~2 A# Y" `; K1.寻求最有分类边界
    " h& L3 {% |* m7 G3 F2 L) g0 k( `2 g1 Q7 y1 ]) x
    正确:对大部分样本可以正确的划分类别) G5 ?1 m8 B' i
    $ G+ _! w( H* H( e" l
    泛化:最大化支持向量间距2 }. M0 O1 o: e

    ( W/ J6 G. _9 p) Q! n3 ?1 \- ]公平:与支持向量等距8 D" C4 U6 O% [5 e6 l8 N0 i

    6 ^3 T0 y" Y0 L* ?  I简单:线性、直线或平面,分割超平面
    , p. Q6 w5 u7 a, k$ ^0 |9 R
    ; B: v- P0 c" H! L( c1 n2.基于核函数的生维变换
    . T3 |, u: b; t3 @  z+ f/ G  k
      ]7 A4 i# S9 k5 J通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    " Q8 g+ ?8 g- |  @3 t# l# \# b: F$ ?
    一、引论
    ; P* [5 o6 L) V+ i
    ; x1 z8 g+ l/ E- o使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    , g4 w! j/ C3 l/ a3 z4 @- F! ^  i$ ^! V" n, R8 A

    4 k& {9 ^3 ~+ V! J) _8 i# ]
    & B3 W8 L$ O1 d. k现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。  r" \, V  S) u- l& l3 P( C# S, R

    : n' e# L' e* j% I7 ^/ y$ Z我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:) B/ q* w) |2 `, y$ d2 \

    - J3 J) v. k- P$ L二、理论铺垫+ Z) G% U" l8 X; o7 w
    " L8 g8 T" R8 R% j: C
    线性可分性(linear separability)2 t- v( ^- J) ]1 k  q2 m
    7 e0 y8 Q+ Z3 L8 R9 l
    / f2 l+ D2 v1 j5 H/ P! B" B3 E1 p4 M

    3 h' K# n4 g7 Q2 ~8 k6 X而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。1 |0 W% e9 o7 R" c
    . w5 n; |3 x! q7 e& v9 U
    ) o, L3 Y) t0 f( ~: V+ S

    . J1 [4 f7 D" b* b决策边界
    4 y8 O; K- g9 Y) j5 t& u
    6 s2 a9 a4 w+ y+ m! ~SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
      d7 F5 P. W  f) n8 }7 m( c" }
    % j; i/ Z& H$ G' r
    , G; x& Y" N, P/ Z1 J/ n. J( y4 f" @: S/ W, S! D/ P
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
    ! l/ P- i$ c9 _4 y9 x7 V! E# o8 B' R  F; _: q) H
    支持向量(support vector)$ \; `9 g2 N# g  J
    . H1 R. E. k$ r8 f4 j/ ]4 N( a
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    , ?1 o& M/ \3 q+ P  c% X- D; i$ b7 I8 d0 V2 }& R/ w& s, J
      Y. l5 L7 T! |( f' }( l( t5 [

    0 r1 u! [8 ~& u. w: c# x5 u: I& y* Z+ [/ R6 a' p3 [1 k8 ]
    ! o' d) ^7 k' [. l# W
    核方法4 _* m/ X+ V  n) L
    2 R# ~; b2 I9 r, I. Z1 [+ h' ^

    : p" t9 B  b1 s1 t" D+ N& }1 W# d: N( A; @
    % U, s3 t4 l6 A  ]6 _3 `# {
    - f0 T( D1 N' e, s( r8 F
    以回避内积的显式计算。
    # u6 n' l1 i2 R
    5 l  S, N9 ^6 {0 Q- f+ h$ X: q/ K* g常见的核函数:
    9 |; n4 W9 I; p( g" k8 ]2 G& b9 b: d/ {) c$ W
    3 S  Z4 b4 a  w( u, N( _

    1 y+ g% Y6 X4 k, T, {9 o' E! Vkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'% h2 Y7 z, Z) J. u: y; m3 o
    11 C( i" \& U2 u4 U
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。/ |- T, o, L; x. A6 O

    ! a7 b6 e+ D# Y$ L& `SMO序列最小优化算法- S0 O+ m" a; t4 o: l  f
    8 C& ]5 o& T% B1 c
      U) Q0 `  G* ]1 M9 U& I$ w

    0 y7 G# F0 E+ V4 |+ l) }; |  L# a( T1 K/ v; C7 k' O+ p8 s
    ) u0 |+ v  U, [1 q* ]
    8 n) H* a$ ~* G" j% ^

    # l1 N5 G: Q: R8 Y% X$ h三、Python sklearn代码实现:
    2 q5 C8 x6 w* V( i  E3 c3 T) U- p7 O
    sklearn.svm.SVC****语法格式为:
    9 h  J3 j2 F* b1 @- r* L7 N. \2 {$ [9 ]0 q
    class sklearn.svm.SVC(  *,
      ~  ^6 ^- c# r C=1.0, 9 I$ g! m+ h% Q2 U1 b+ _
    kernel='rbf',  d# d1 e* E1 F" F8 x# \2 Q+ x
    degree=3,
    ( x1 {5 Z3 q0 X9 ~; a3 Y( c( w( m8 w& V gamma='scale', & t) X9 a; H0 k' o3 d7 h. T" o
    coef0=0.0, & ?4 Z3 f; }( x+ u) `
    shrinking=True, & Z2 {6 g# [1 Q9 k
    probability=False,
    9 s4 c3 {7 C4 \# e1 m( f tol=0.001,
    + G1 ^* m# o: z. J; q. Y cache\_size=200,
    / o1 ^  k% N+ Z0 _/ J$ f class\_weight=None,
    3 x* Z: _3 F% L  L% |9 y verbose=False, 4 Q5 u5 ~3 L' r& E* Y  a- U
    max\_iter=- 1, ! L1 l* Q: n) x( W8 T
    decision\_function\_shape='ovr', - d; T# S/ V! I3 H/ m, c
    break\_ties=False, ! Y4 O' W4 P8 ^9 j1 d, K" z
    random\_state=None)) j& A$ h/ {# d0 n$ F- r! }. G

    $ s! S" m) G1 T# C5 f7 z; K- l) p( e18 g, s$ |$ _+ W3 [
    28 Q! s" L. Z! Q9 F% Z- }! Q
    33 r- l/ {2 F7 }9 m) T+ R) ~" v. H
    4
    0 b! z% H( P! D$ ^5
    3 n8 s; M! U" o2 _2 C, `6% g; y& m% v; {1 ]+ C0 e. U
    7. G9 K2 w# U7 ?. f% }7 p6 q  \
    8
    7 {5 Q' Q& J. p: _) o) q9
    1 F- `. E4 A$ r- d* X10  [( A3 ^" y' P0 I) q
    11
    & k- d5 Q" H  D. V# `% y5 m: Z6 @% `12
    , t7 D* Z: B# E+ `9 v0 ?13
    $ h0 R- x* q2 O5 O14
    1 N1 R0 ~% Y5 x: V15
    . J6 E3 f  m$ Z3 `9 V168 A5 u" _( j  O- O
    基于鸢尾花数据的实现及解释' u  R7 v, }" s9 r( b( e3 M
    5 C" [  X9 u+ s. V- o) m
    代码如下:
    ) `7 \: z  h) ~* g* o
    2 K" {1 Z& I* b9 |" h 1 # 导入模块
    6 O5 F% G4 S8 V% z) A& U/ G 2 import numpy as np
    6 b& r" B0 |5 j2 ]* T 3 import matplotlib.pyplot as plt  a" [) ]1 O2 b+ l$ Z! ?! s) B, b& F
    4 from sklearn import svm, datasets
    3 E4 o  ]) ~: }8 d9 g 5 from sklearn.model\_selection import train\_test\_split3 y  d0 l5 T8 m# {# }0 ~1 o3 \
    6 ; C: C9 K/ U2 O; A1 ~% C
    7 # 鸢尾花数据( K; j! r( I, f2 N
    8 iris = datasets.load\_iris()         #原始数据
    & W# z; ]. G+ Y3 j$ H7 L 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类), W* ~* W2 j+ a9 U1 P
    10 target = iris.target- u" r- O3 Z4 C  m3 J% q0 `/ \9 k
    11 - r2 O6 r* |! |/ h6 l
    12 #数组分组训练数据和测试数据
    , B& Q* g; g8 c1 g+ c3 D13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    8 ~) W% y) s/ g! }' R/ E14
    ( P# A! i5 [7 [, Q* s1 h6 T; D$ r# z15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2; }% a" i$ p* ^+ o* w
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t/ ^% K5 [' g* P8 n0 U' E
    ————————————————% U3 N& d- o0 \8 m& j5 r
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。$ ?: i* b! W/ M( [
    原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    + d0 J7 ^3 v' V. c4 b* u& p# D# r
    , [' i1 @: |/ c! u, S- }; `$ G, K# }+ E
    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-13 08:02 , Processed in 0.327681 second(s), 51 queries .

    回顶部