QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2582|回复: 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
    支持向量机分类算法
    ( c. |5 j* H5 R+ m9 M8 x8 `
    * I7 ?3 Q7 b1 U1 |( M8 j🚀 优质资源分享 🚀
    / h1 f. k; O; Q& L4 T- \学习路线指引(点击解锁)        知识定位        人群定位
    $ Q: r  r/ J& M🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    ' B. N1 w0 U% s/ Q6 a&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    9 }% @) Y3 G$ R% ?* n# ]支持向量机SVM5 k/ C% v  K0 S! D$ [

      j$ h* w0 a7 c- z支持向量机原理
    * y. p. f; B5 P8 P, i$ w& F& `# [" Q
    1.寻求最有分类边界
    * J) W2 l% L/ b" u7 @
    * a/ `8 V# X& i0 \& k正确:对大部分样本可以正确的划分类别
    ( c: t- w: g( S# l
    , I4 P) H5 z1 k. Z泛化:最大化支持向量间距9 w7 c* m8 S. p
    7 R1 b4 |$ _8 y9 X7 Q" {. y
    公平:与支持向量等距7 o& ?8 m4 x* F1 h( S4 C

    - H! g' W: c1 U9 {0 \% z简单:线性、直线或平面,分割超平面% o# J, p  m; _

    : w, l' E, }3 [2.基于核函数的生维变换
    , g# x' S& x0 t+ @  k
    ; u5 ]  |9 C' E2 H! l+ ?! j通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    2 K' G% o# v5 R0 S  X1 `/ d/ B2 G9 w8 z
    一、引论
    $ R" ?- G+ G' |2 S1 o  l
    " V$ Q, y$ g' `! ?使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:8 p1 I/ B, A/ o  y

    ) Y" y) K1 }# A) u5 C/ @9 O( R; q6 C$ L
    8 C* x1 U. W. R, X& C# J
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。8 `  V- r( A# |! ?

    * B" O: e% G! U2 a- s我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:. I- y; R; @* \! l# L1 y) M  X
    " e+ x2 K4 a8 [& J; l" I2 t
    二、理论铺垫
    * T, a3 n, t( u- e$ v
    9 r; ^7 m+ B+ b5 q线性可分性(linear separability)
    8 ]& ~8 }3 L; B, p5 r; H; {: n1 c  Z% }5 }0 j3 ^
    # W, v1 q6 D( e& D6 @
    ( W1 p1 \% D4 ^, B  ~4 q' k0 B
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。' I) z: O* A5 `9 U

    % q" v( c0 Z, C& s3 g/ |0 Z) n/ `

    6 {" x  h) c+ k& y( Z) f6 d& a# B决策边界
    9 D5 N4 Z( J8 G1 b
    6 \2 l4 [. `0 G! c5 aSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。0 a+ {  L2 _# _9 j" D6 Y# Q1 _$ W
    $ @& }3 K9 k. k; `

    + I, n+ Y# X: H' D6 e
    + q! t+ G, N8 S( E总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。& x* X# V- T! Q# p# i1 p" ~; Q
    3 T5 a5 }- Y3 a. Y2 n& J
    支持向量(support vector)% k. }5 C" F0 i  r9 \% g6 Y0 c
    ; l, q1 n$ m8 e! i; k" Z
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:  r( O" [: _0 K* @4 M1 G3 o. Q
    % E. W( j! ~3 \$ F( B

    + f; v* U3 A1 W) \6 x( Z- N# ?
    ' z0 O# j" {4 I3 c! p, R0 N
    ! z1 ^. F" }) f) j; X5 b6 [( D7 r0 U( j4 S1 j" t( r
    核方法& H3 }4 D8 h$ T) u  v) P

    ) i. H; z" W4 P3 j$ ^. ?6 P1 M9 p- D; \2 S! K" d: `3 Z" z$ t; [, Y

    2 D( s: O  p. w, b8 W' x
    + {' o9 ~  C+ ]! L& c
    2 |8 Q: Q. \: p( q' v& y0 h# W* t以回避内积的显式计算。
    - Q7 m4 E' @  V2 j  R3 P: K3 [7 k4 |' e8 r% `$ M, J. K
    常见的核函数:
    % G; I" ?$ I- ]5 B; L; y$ S3 ?
    . D' J  B6 G: o! l+ ]/ i. C0 E: g% q4 }* P7 E8 e& o- P

    # X( ^* r/ L8 N6 q% R( g+ gkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'# S+ o" G& j6 r) u3 k2 @
    19 c) E9 K5 L, E5 P9 ^& ?3 B
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
      I, H% \% D$ K6 h
    / c$ M0 ^: J( [SMO序列最小优化算法, F" o* G" w: t! e2 }

      a7 a( e& L/ X8 c1 ~/ O+ z9 f
    ) T& ~+ u$ ~& K- X
    , J0 r3 a0 m) N6 `! i" w" h
    # c" e) l2 i6 E' d8 ?6 F$ X, ]# b% w2 K) ?7 R) a( c* A; q6 p
    % l4 D8 L+ d- Y; i" i; w

    ( t" S  _9 v/ `( D; I三、Python sklearn代码实现:+ c; {0 K0 f9 M' T+ H0 I

    ( [- p  ^. z9 A; q( T% v. ]sklearn.svm.SVC****语法格式为:
    ! Z* A8 I- _4 \- ]+ H1 R! H  s2 X! D0 d# }8 B; L$ V# B
    class sklearn.svm.SVC(  *,
    0 ^) G" ]1 \; `$ A6 ]1 n: Y C=1.0, ) X  K3 S$ ?! M& X  A* Z0 ]# C( j
    kernel='rbf',
    ( _$ e' i* z1 P+ {7 d6 Y: f$ C( Z degree=3,
    % m, g" S. X: g: g& A: w: r gamma='scale', + V' R. f$ u. E8 h9 V% ?- u: T3 g. I
    coef0=0.0, 8 Q6 N! a* Q2 H" j# k' T- C" e
    shrinking=True, 1 T% D# z, [+ Q8 s( z
    probability=False, 2 @5 V0 F' h1 q
    tol=0.001, 5 k. D9 j8 {% @1 @' R
    cache\_size=200,
    7 {0 M# ]9 P+ L class\_weight=None,
    2 S1 c0 K7 ~8 Y; F  n! }6 \, E  R verbose=False, / D$ D- u1 q+ L$ G7 N
    max\_iter=- 1, 9 u7 B' }( a2 ?$ Z! J
    decision\_function\_shape='ovr', , L/ m/ f/ A' z1 Y7 i- L9 o. Q
    break\_ties=False,
    " E* ~( D- W1 ^1 I4 L/ t random\_state=None)3 D; L# e4 V( P* n. {: G& P
    5 I. M# s. h( k8 _4 d
    1
    7 b& l* v  v& m" Z. r9 N2 T2
    / o0 w1 A' a8 b! J2 R3
    ' d. K8 Y& g1 @- \3 _& Z49 F* v( t) m& |0 Y7 U
    5
    # Y# x  a+ ?+ `. ]) o62 G7 ~) {+ I( A, m2 t3 ^3 |
    7
    0 n' t2 a/ J9 ]2 e2 Z+ w# Y0 p88 P1 R# G" e9 f
    9% |- ~$ Z4 b. t* G- z8 f0 @6 T# Y
    10
    ' z* U9 B) W/ T& b, M11  j" h- X4 Z! N4 {  H
    12
    $ b( l' H3 G: N2 h13
    . E$ `6 I5 K' u! ~148 P! ~* M8 u* H- a
    15
    $ `; @( w( x' i. n9 I. T16
    6 o) I0 ]7 b& W8 f) y基于鸢尾花数据的实现及解释
    , l. O5 _9 F& M3 \9 j: {2 y, K. b+ m) t9 S. k2 t# z
    代码如下:
    . o! d+ M8 j( s0 W+ x6 y& b1 F1 {* |: w
    1 # 导入模块0 y; r! L( P& L3 g5 x
    2 import numpy as np
    2 O! {1 G/ _: v4 x+ V) {- M 3 import matplotlib.pyplot as plt
    ; v2 U! e* W9 s2 A! U. N! G 4 from sklearn import svm, datasets4 g" m% @1 O6 I8 Q0 R
    5 from sklearn.model\_selection import train\_test\_split
    . w! v& t( m# { 6   B0 H7 T$ m% Y! d; D( A
    7 # 鸢尾花数据
    : h) f" W; L1 |& n; O 8 iris = datasets.load\_iris()         #原始数据
    : [1 q" ^" Y7 Y5 J; V2 o 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    ' Z9 ]% F. `) y5 \6 `. R10 target = iris.target
    / L4 b( M1 n0 x) r# Y7 H' _+ p" V11 , Z, o9 a6 J+ z/ k- N; A/ K
    12 #数组分组训练数据和测试数据6 ?6 E" @; q- k5 q4 L( Z
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    + r( G. Y' |" R0 E14 ' l& @9 }( m9 ?* E" G; r
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2, u! {9 X6 ^1 `4 O* `
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    . O3 f1 V$ T* s0 o————————————————) X8 _) o' z# {: {% O6 N9 L
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。& T, c0 N; G! O$ s
    原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791" M3 }- I/ P' Z* N( w

    : u; E5 u- e( ~: j  o3 W+ S4 }9 R8 h  H7 C' l# m
    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, 2025-8-23 19:58 , Processed in 0.509087 second(s), 50 queries .

    回顶部