QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3132|回复: 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  c: U5 e3 T* ?

    : h/ e, n9 R# k4 c( n: T2 c& Y🚀 优质资源分享 🚀: ]  x1 I+ r, z+ E/ A5 w# [
    学习路线指引(点击解锁)        知识定位        人群定位
    9 {# A8 S1 ^3 l. b/ ~🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。7 g0 C9 {0 x+ @: p; N$ Y
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统" y% t$ @% H( p/ E: n. x
    支持向量机SVM
    1 v7 `/ B8 |1 `) V  ?/ f, z
    0 U( T. Y% I; ]; P支持向量机原理
    $ B+ t* L2 g+ H5 m6 j8 d% M# ~3 a1 G8 }
    1.寻求最有分类边界
    + {+ f$ s2 N: K+ R, T+ s7 n2 k  M+ c, k& M% t* t7 w$ w" P
    正确:对大部分样本可以正确的划分类别
    3 y3 m& H1 D$ H
    4 C# f! T2 ]8 _: H泛化:最大化支持向量间距
    # q, E" B8 d: s8 c$ R. a3 ^2 V$ g, M! h
    公平:与支持向量等距7 n  ]4 @" D( g9 r$ O2 P, ^) ~
    - D, Z4 R  q7 [: G5 D+ U
    简单:线性、直线或平面,分割超平面, C+ Q: I- H" n  F

    ' z1 d& u4 d) @. P, L* R2.基于核函数的生维变换3 k" c0 g/ n! `1 Y2 E1 A6 Y9 K
    " \# {2 r' C6 P/ h
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。0 B9 V! z( R, x; j0 O; \
    ) g8 g$ ^6 U( B8 c
    一、引论! t3 A! U  E! Q. Q# X  i6 y% N! e
    ! @: d" @! N* [' W# I3 d# F
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:) z! @! @  U- }4 q* G4 H; Z

    ) E3 x& e4 M* L
    & d& X5 R- V0 e! q/ C. v# o% p, V- ?
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。
    6 e4 N: w1 c5 O/ Y) q- `  d- V+ f% D
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:, p) z4 s8 ?1 v/ H2 I1 a2 I! l0 h
    2 L4 ?8 k; t4 H1 X2 D% z: b
    二、理论铺垫( D$ @4 e/ Q& z6 O: j
    " S% N# U! i' K
    线性可分性(linear separability)& f9 G4 Y0 l0 ], j, x
    # D- ~0 [) S; Y. v

    8 W& G# ~; X8 y" N
    / g& }; `: A( B# w8 r. G  v而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。$ z8 v5 G$ C: X% _
    $ X2 v! H$ i$ q' m) P6 y
    * _8 B5 @7 k( K; p+ [- o
    ( P9 S3 U$ K" ]4 I! ^' P" q% s
    决策边界
    , y0 d/ k, ~& G# C2 ?' S) P2 ~3 P
    1 l% z/ n3 d% w" ^- U) k0 q* Z4 HSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。( K4 t8 E0 m& x- X; y) ]
    * s; D% V$ }$ j4 u# b; E4 v
    % s& v" A- _2 }/ M( M6 q7 a
    % U) ~$ n7 A# b
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。+ {. D+ }' G3 F; h+ Z, G
    9 T, X8 B; U/ Z
    支持向量(support vector)
    % ]9 M0 H6 R1 ]; F3 S0 ~; o' t  {1 p6 |7 v+ u  j* G& R: D" `
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    % T& A+ O/ ^  q
      s1 ?( R0 b: ]7 k9 h% k
    " I0 d% ~* A  [2 t  J& u# \
    / a5 j6 e' g4 q& [$ X$ C8 C  t, J, `) p/ E$ k/ Y* i

    , S: |: z6 I  U% F4 t1 A核方法
    2 D; [& i* x! G7 i9 t
    ( N8 {% ^2 @' Q4 r% a$ p# t5 W. ~; z" T% c2 Z4 h

    + z* ~9 y# c; w- q, _0 k4 J: e
      v  W/ i8 N, j
    1 h# }! B5 Z1 ]以回避内积的显式计算。
    4 I( B7 y3 f  V7 S
    . ^/ U( z$ M# Y' K: Q/ P常见的核函数:8 b8 k1 |, U) _9 m# A" z

    3 t& t) [7 v7 v
    5 V# b0 b" o& L$ s/ y" ]" a9 Q
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
    6 V/ x9 `( ?& N1+ r7 ~; R8 _8 H3 [  G. k; a6 x
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    * M5 R" r( h1 Z! I0 S) q; r( g; W4 j( j  s
    SMO序列最小优化算法
    6 _& A/ c. P3 t! q8 d6 f, r; c# H; [6 d0 ^' B8 ~

    8 S! Y0 i* ?. }" g, F% ?( |
    % ^* c3 H# O/ Z- P/ f# Z; a3 N  O! E

    6 v2 V$ G2 X. l0 k5 Z; A
    # J1 b4 T$ ^/ ?, u8 N- e& z) l  W/ p% H7 v7 r* D: E( o& Q
    三、Python sklearn代码实现:
    . H) K) `/ a( U9 u
    & k9 r+ `3 k  W7 L& y6 H) c- A8 ^sklearn.svm.SVC****语法格式为:
    . z6 j8 y1 a6 S3 m' v# f8 _: r7 A$ v1 d
    class sklearn.svm.SVC(  *,
    ) J1 e( H  Z# i" i* A( t; \ C=1.0, 2 G4 l, I* c$ y/ Z7 c
    kernel='rbf',. `' X' J% w/ e5 |: s" A0 u
    degree=3,
    * j; p, B- e! M- \ gamma='scale',
    / {/ r3 _* e' x# v- f) ^ coef0=0.0, ' \  X9 T8 l4 N; r3 k
    shrinking=True,
    6 r0 I( z2 L3 p) T3 K. f probability=False,
    % N( d; |0 @; l7 O3 v" e3 \ tol=0.001,
    ' n1 B7 e. `& U' E* G. ? cache\_size=200, : Z0 G- c% k% D* k
    class\_weight=None, # Q, v7 O0 {# {: k
    verbose=False, , R: z7 B7 i* J1 ]7 g  b; Y
    max\_iter=- 1,
    3 ]( A0 s: x# k* a% X decision\_function\_shape='ovr',
    & l- m7 w" Z- [ break\_ties=False,
    3 u) J& O9 n, Q7 z: M; ~8 ` random\_state=None)3 E! p1 W; a" U  V# M1 _

    + U3 v" M- b$ K9 P7 g1
    % k" f% R4 A! J  Q2
    0 p% {3 |* f9 k6 l) n: _3 D3
    5 g! r& g$ V& v. @0 ~4
    - o5 N9 U+ y2 T, ^- q5! B/ I  X& i& t5 s
    6: w( c' g4 |: L. J+ H) F
    7
    $ F7 r/ [$ e8 s1 i( l7 t& E6 I87 S/ O' K* H- q: R" O
    9
    ; u2 V) f, ~( Z6 \10
    . Q& O5 g! f- O6 o7 @: d3 |' i8 ?11- Z4 E8 }2 H: U/ l
    12
    0 Z6 {9 o* `" ~2 u2 u1 @" }) ?13& ^. ^! h0 e& {0 \: q) z6 V
    14
    + H$ W  z2 M/ `  t+ z; B5 n15* Z4 K" M7 [# p) K9 X6 x, A' I
    16
    - D' E: w7 S! `基于鸢尾花数据的实现及解释2 x  g/ n- p* s' T2 i
    . n& Q1 x5 }- B) [: Q8 _  [
    代码如下:* b- b' n4 H- }* U
      u2 e2 \4 l! b) m0 F, j- Z
    1 # 导入模块. o! F& A1 Y% Z- R( \
    2 import numpy as np4 h$ w! [: z$ O8 M( p0 x& }% F
    3 import matplotlib.pyplot as plt
    6 O1 b7 {  q9 g0 P 4 from sklearn import svm, datasets& t# h& ~0 Z* @' L! b
    5 from sklearn.model\_selection import train\_test\_split
    . y$ R1 E9 m! a 6 0 S. d/ o7 ?* n5 x. Y8 P
    7 # 鸢尾花数据  w8 `& A; }$ a+ A9 l  s4 ^% D
    8 iris = datasets.load\_iris()         #原始数据! y, J7 J7 \& J  S9 w! f* A3 P
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)' h/ t' A6 ?1 H# N: C& C
    10 target = iris.target& R7 m8 Z4 L/ d4 C
    11 ' i! @/ R( p( a* h
    12 #数组分组训练数据和测试数据/ i' N! O1 k0 K% @  O& \. d6 G  I
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    " R4 C% s6 E: w* m; o0 C14 $ Q3 N+ d2 g5 E/ w0 W# L
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2& s- y+ g/ G. C: Y6 v( u: L
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t: X& O  n! g# v6 r  l
    ————————————————
    ) K( q. Q7 N$ a# R* Y" I版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    / {% W0 Y$ v3 o, C, g$ I( l5 z( M原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791) f% @1 v0 j; m8 S9 h$ m

    * {- G! n; M% D' G( M  e
    " ^8 ]6 @, x5 S8 Q
    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-15 03:27 , Processed in 0.410241 second(s), 51 queries .

    回顶部