QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3165|回复: 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
    支持向量机分类算法. L: t, v. U; t/ K( z

    ! L8 a; t) Y  Y7 Y3 M- a🚀 优质资源分享 🚀
    0 v' \- V/ |( o! k$ M学习路线指引(点击解锁)        知识定位        人群定位8 _9 ^' p0 s6 ^. [8 I: E0 F
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。0 R! D( Q' u" F1 g) J, d, i( Y' E" u
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    / u( a) B* d% [2 z支持向量机SVM
    0 r$ j+ G% \1 `7 v) X2 W5 y1 A  N% o4 n
    支持向量机原理' U: U& z0 a1 j
    $ ~8 B, v, i3 L9 C7 G  d2 g8 Z& _
    1.寻求最有分类边界
    # h1 S6 s' ~8 a& g5 Y
    ! C) u. y0 Q% p) i) p. n( E  ^正确:对大部分样本可以正确的划分类别
    7 b- q- E1 z& }5 }  d! u* ]
      Q3 t7 }( {0 x' {- Q/ j2 d- R泛化:最大化支持向量间距$ E% b) X: i0 e6 \9 E
    4 t  z7 w, P$ M
    公平:与支持向量等距' m0 e! @1 b$ V, h
    7 y% c) S; H. f- R  W
    简单:线性、直线或平面,分割超平面# ]2 k1 c4 o. y8 u7 D, A' I; C

    ( l! w, z7 b0 y2.基于核函数的生维变换
    - P: U8 U4 j3 Y, d& A# ]6 m  I9 @+ e" h. e5 \, D
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    ( c5 V1 E/ P2 d2 |9 k; D6 v
    0 |; L4 h) z! U一、引论5 I" T6 S2 R' v2 w
    2 A  c8 i8 D) K( d7 F% B
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    & B+ V& w" ]5 D/ Z" Q% c. X9 ]7 Q/ b. _  D& X1 ^# N
    ( A5 b5 k' u. A$ n' j- l

    + ^. i$ O2 i6 W0 f9 z% w, _现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。
    + Z7 r% Z$ o4 g9 ?
    ' h* x0 P# t$ c/ x1 S1 G5 K( d7 |2 V我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    - \, B# t& N2 w! {+ ^
    " V0 Y3 p; r7 ?+ r: |7 f; }二、理论铺垫% B" q0 N) t+ R; C5 i
    & H1 ?: J) m: |# r* T$ C5 K" Y
    线性可分性(linear separability)) e: j& G) E: C3 }6 \: }, E& Z
    7 k9 A$ O3 X5 ~: ]* J( U5 _2 j+ `- x
    5 W) {* A9 k% q0 a3 d) s- i0 O1 d# i

      k7 c% F1 r5 I; ]# U/ L而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
    # f! }3 o+ }. C0 B& R
    8 T4 \2 x* a! r2 h# t, r( S" K  h- {; R  l: K

    * R: e- `8 i: o* V/ M# }0 _3 b8 j决策边界, }0 M) B. H. r% w5 L/ z* {9 N
    $ j' b7 U3 q' b
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
      S  ?9 ^1 a, S# K, d/ {( S
    * X$ l% F6 d" w  L. o- ]7 R5 M( m) v2 r6 t+ a% m  e1 b9 y

    ' h- m0 x3 T5 N0 W" s总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
    % W+ T$ a% b3 J- _; Q$ E5 J; N5 a% F7 I2 C2 E; E
    支持向量(support vector); x* x4 U, m% s& v. [. [

    3 H5 [- l0 e) T( [" G) j5 Y在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:0 e; H3 B) x' I; ]
    , A% Y9 N- I7 Y; v' X: k4 l. X
    - z% D3 ?- J: t- C& X9 w
      i* \" d4 C$ J5 N, @
    / i+ s+ r8 n1 A% h# l
    6 K$ s' H- k0 a6 F  j8 D
    核方法1 i) B! _' ~# t9 U! ?3 T' A
    / R0 @; o- s) d8 X6 g, K
    / s0 i! \6 U# G9 j) a, R) j1 t

    - x- u" w3 H. S3 a1 k
    # |9 ?! P$ e* t& g" v4 x# F: s2 P2 K5 r6 T  `, f
    以回避内积的显式计算。
    8 P2 N, |, t1 n7 l$ E* F, d) `+ ?* ~1 ?2 ~" D5 q+ M/ N
    常见的核函数:
    % c. \( N* k3 p# `5 [& u  O' e
    3 b" I  Z. @8 v  x0 {; g8 ?; m  c8 |) Q' R6 m

    " ^3 T+ \( ~& wkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'# y$ V# q: Q' |8 {8 W
    11 |) i1 v) \7 ^
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。. \! [% z# Q' E/ |
    ( @0 j" Q  z7 E& h
    SMO序列最小优化算法
    2 \2 d3 s! T' v9 a" F1 k+ W( L6 Q) ^/ E

    & ~5 N" J, D! V3 X, o: k. D: E8 ?' q& F& I# s4 T. k: `3 F
    / ^: I  S' i8 v- H4 d+ S' V
    * l7 T0 g6 L4 y9 r

    - U2 Z  W+ c9 t3 T# c6 l) J
      @$ V3 |: [; e) ^: d! \. J三、Python sklearn代码实现:
    & m* }5 N1 O& P" t. z# j+ a
    % ~  Y) }4 ?8 Psklearn.svm.SVC****语法格式为:
    6 a9 a& E  W7 q8 y
    0 Q. M: v# q2 `  }6 E6 B, v4 iclass sklearn.svm.SVC(  *,
    " @8 \8 s+ X! z) h! C+ f C=1.0,
    ; V2 w6 g! k, ]* m$ y kernel='rbf',
    1 R$ a& U" C$ N2 j* Q+ X( w8 { degree=3, 9 x0 l, {; }; m6 x8 l# o+ E
    gamma='scale',
    9 I. W7 c+ a$ ~& t coef0=0.0, 5 ]' G" u- \# u$ w# ~3 B( n9 t
    shrinking=True,
    " h! b3 B6 n7 X9 I9 b probability=False, : I) A4 t' b$ |
    tol=0.001,
    $ H  _/ S6 {1 ^ cache\_size=200,
    . p4 v2 z7 A/ A" c' }( }/ R class\_weight=None,
    % H4 j, g' ]) r7 O verbose=False,
    3 ?( h+ r6 A! P; v; q max\_iter=- 1, ' P( u8 X& m8 u1 p  F" n
    decision\_function\_shape='ovr',
    9 d  y0 {$ ~  L; D* i+ f2 f6 b, T3 M break\_ties=False, 0 s& k9 p- U8 z" d: L$ \" Y: G
    random\_state=None)7 y1 [% N% G1 Y1 E' y+ k

      {3 Y0 d" K+ @0 d3 Y( P: A3 v1( u. ?1 e# n; x& A. V6 [3 y
    2
    * e1 g" A( [% c' W3 D0 u3# m& l) A* d9 c0 @/ U( u0 L; u
    4  d# q2 d7 E0 g2 g
    58 q: l' ?  m0 z5 l! ~  \+ I
    62 |9 N8 i2 S& H
    7+ @; `" Y1 n! U% p
    82 D4 Q& R0 `" L% u2 E; j
    9% ]' A8 \/ s! ~$ l( J, p
    10; T: P' h# S9 F2 ?! K% A7 f
    11/ h& j+ \, Y* e
    128 o% ]3 s, ^  g2 m5 t
    13
    ( J$ A7 l. z' Y; k, [, }14
    ) f! ?, r; S0 F, b15$ t9 u4 h  d4 X& G. ]3 R0 x3 _
    16; d8 }- w# b4 a0 C6 q2 u5 Y
    基于鸢尾花数据的实现及解释- c+ W7 {9 q: W$ M8 L$ y+ i
    ( E7 b" \5 b/ x# H% I
    代码如下:
    ( P4 ]' K; Y5 y8 @0 o; L6 l9 X" d( S% u5 g/ U
    1 # 导入模块
    3 D% b8 X; ~+ `" p$ S 2 import numpy as np. u9 j. L" L+ H
    3 import matplotlib.pyplot as plt
    . G) z2 N/ N# p! X: h" Q 4 from sklearn import svm, datasets$ F' L4 F# a0 Z! W
    5 from sklearn.model\_selection import train\_test\_split
    * o/ T& x! e5 I6 |2 U+ s 6
    7 ^" S- X9 D3 C 7 # 鸢尾花数据3 p) x* K1 O, `. `8 n( f; s
    8 iris = datasets.load\_iris()         #原始数据+ m1 S/ |! \4 Z) P4 H1 h0 i+ ^
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    6 t# G/ P) T! a' I) r  [10 target = iris.target) Y* D& W+ [5 k) g7 q
    11
    % g7 C& X; w4 g) @12 #数组分组训练数据和测试数据
    + C$ `: K1 b5 ^$ s" L/ k13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)4 B; e8 w. v* n
    14 ' p* Q' J; b6 M9 K
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2$ O: [- r8 j% r4 B8 w/ u1 \/ a
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    8 N1 N9 g! P" w- `! }5 W————————————————
    8 Q# _  ^" {3 n* Y6 ~8 E版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    $ A4 s0 P+ R3 J, w9 i4 s' i8 n& R+ `原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791/ f- p( ^9 O0 W- ]( X

    $ Y# \9 l  h8 ?* m/ F3 J4 b& s- F8 ~/ K& q! }7 k! a
    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-6-15 20:26 , Processed in 0.385527 second(s), 51 queries .

    回顶部