QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3168|回复: 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
    支持向量机分类算法
    ( P3 b& M; d/ s% m- H8 ]0 }1 O. H7 @  {* z& P9 y) Y7 e5 A! Z
    🚀 优质资源分享 🚀5 }0 L$ @0 G( u7 d
    学习路线指引(点击解锁)        知识定位        人群定位9 s; s: z+ F# {
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。: {) L' l  l6 [/ l8 k  f
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统  o6 Y0 R& T1 k! G0 G0 D
    支持向量机SVM
    1 b) A4 V* T& j( `5 E* m' ]
    + n7 ?3 Z7 `' x; @: h0 ~1 d, D; i# `+ G支持向量机原理& f" k: O+ N" B' G& m
    ( j$ \5 f- W+ p$ S( u" S/ |7 r
    1.寻求最有分类边界4 ]& {( }9 O! H2 }2 s, n' {4 R& y

    " k# D" k1 Z0 U0 I正确:对大部分样本可以正确的划分类别
    , P* g" Z2 I/ M9 H$ h
    ( T0 [( q1 F7 }" V泛化:最大化支持向量间距
    # W' N. u* g& S. u$ P% D$ @1 y7 w/ E4 \9 Q( ]
    公平:与支持向量等距
    5 w9 T& j  E, H7 `8 n! w/ Y( P& p4 O! H$ H; `: ]
    简单:线性、直线或平面,分割超平面- {2 x  T" z: _; ?/ A& W
    : C' V* r. ^9 g2 K1 `$ q
    2.基于核函数的生维变换, ]* V/ }# G. f) a3 h

    - {+ R- B8 p8 K' `通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。: q5 q1 H( p: \9 \3 k

      O: F$ v" O% V1 B( {/ \( n3 g/ g( e一、引论
    3 _+ ^; F1 ~0 l3 K% l0 N3 ^' A2 N( n( @  ^  k! Z1 X" V
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    , E/ l& C) n0 {. {- ~5 e$ q9 F( m: K; R3 g( |
    2 [7 E& x2 S2 w' T( D8 x( b' Y
      Y& D* X( ]; l! t7 k
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。, M. X/ D0 `' V7 j  @4 M
    5 _: K: m  z" |
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:. I4 O% `: e& t( ^
    7 V' M' `7 Z# t/ F" C+ _8 n9 X' A5 @
    二、理论铺垫( |& u2 m- M2 M  k: f' C

    ) A* W3 b7 P7 _3 T' i$ {! e( I线性可分性(linear separability)
    2 [- [/ Z& \% e: n/ X, T( [/ ]! I/ s( p& T
    ; s* u  |  Z+ n: A0 |- O# u6 n9 E

    5 l! Y) f  [& U% y; I% x6 H3 g而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。3 \4 E- H; L: C' w( m3 o- W8 O% `! f
    $ I% w$ l) b; ^+ Y; V6 x

    4 L- B- G& x# ?! ~0 A- x1 Z4 L8 V' I$ ]+ x3 x0 E
    决策边界
    / J8 ^& N2 s. [9 n6 q+ n6 W9 B" A
    $ ?7 }: }7 m7 A5 kSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。5 X4 i8 p7 U* f0 `% s

    5 `+ h* Q/ F1 P- @( z( e' @0 u
    & n( j6 l+ C6 H, u0 `7 O7 y6 @7 B7 Q2 o4 r% U' s' i
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。0 o" r  j/ _  p6 |- N9 i, U) b

    - o" u& T& v4 X7 }8 J/ |支持向量(support vector)
    7 P+ @4 D4 ~1 R5 D" Q! _
    4 e* }' f% ]6 L  A. d在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    & H8 y/ M) y: w9 ?  ]- Y+ P# `& u5 Q; q8 o

      A  `& e4 ^; O; r5 b+ H' f( x3 M( O' _' c# O& a. S8 U
    . H8 T/ e! R3 [# B2 d" X0 i2 `
    : h$ x, c% F; u8 X- o
    核方法9 `7 V2 E* h/ E( V+ s, g
    : _0 P9 i- {+ a" p: r4 ?2 ~

    , C* y+ e) F" a! `  d) l% v" D9 V2 u9 n$ \% Z

    ) A* _/ u; z; l/ V  N9 G
    ' M: L4 \! Z0 O9 d. s2 f- s以回避内积的显式计算。
    / s, o; @, @% R( j
    7 h: u$ j* u) r" d7 n常见的核函数:
    4 q! P8 x7 l7 d, d" j+ }# ?
    3 q" w; j, K1 l6 G: M+ M
    ' g: K( e  ~' ~+ z  j% v& C# n' T5 G+ G" g: a9 \8 l5 H
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'( L" K. e) w1 @1 R/ e
    1
    0 {2 G5 Z5 y; U2 m当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    & l" S- h0 A! U4 e, M
    7 ~' w, ^/ ], Y- i0 J# D) u" _6 GSMO序列最小优化算法! \! E4 Z, e; y/ n! P# O! Z/ @) z

    $ u" @- c0 k9 H* Q* f4 x" w0 Z8 @3 Q1 e

    $ q: W% H* n7 K, t+ y+ L
    , S8 d% x2 u4 ~# o7 J, A* D  V- S5 v  ~8 V
    ( d2 m+ F  ]1 A1 ^

    9 D. `* ^; B" c; M% c2 J/ r三、Python sklearn代码实现:/ H+ b) {. p  V1 |; @1 }7 s6 g

    $ E5 J" r  t1 m. Z/ ~0 n0 rsklearn.svm.SVC****语法格式为:: h" a" D- k9 q# y/ z. f8 a
    ' W( e3 O, \7 I( I
    class sklearn.svm.SVC(  *,
    : \% K5 o- N2 c( i6 E& x" v! b+ p6 Q C=1.0, 3 l& A4 V1 T9 s! O# |
    kernel='rbf',: @3 x) }' T) D1 S0 J
    degree=3,   U8 H( L' s! A9 E4 j+ Z
    gamma='scale', 6 w, k0 m! R9 x
    coef0=0.0,
    8 A( U& @' [% e shrinking=True, 6 ^6 F" m8 D! }9 ^3 e. D
    probability=False, ( V% L% q+ Z. q
    tol=0.001, 0 l2 `2 C% M) r, A
    cache\_size=200,
    ' A- U% r0 Q. t7 }# o& \! a6 W/ N5 Y class\_weight=None,
    ; q/ D3 z( B' Q4 z& S# p: |  h  H verbose=False, 2 ^0 o) T* s6 T6 Q+ E
    max\_iter=- 1,
    " n2 \, K8 G4 D4 y# z decision\_function\_shape='ovr',
    " V. n7 ^& }( v' E7 g break\_ties=False,
    + G, }6 [8 k8 B4 V% Q# E% {# o random\_state=None)5 Z7 Z4 j4 q, v- g" m; K

    , e% y. @6 W- M' J1
    - w, r% d3 I1 S- o0 t0 h8 m2
    ' R# k: t, _. g4 Y9 g: w3- E( g' `3 q( M
    4' b" J: t) @7 r- p
    58 i* M, ]8 p5 G# p
    6
    ) p/ y9 f1 J! |0 Z7% e) v# _. m3 L# n, E
    83 w* q/ e" }* G, y$ h
    9
    4 d; u$ b2 d& J* p10
    # N: `3 ~8 t' j6 g$ n) j" s11- l) ?# P( p! y$ ?, V/ F5 c2 f
    12$ A$ r' g0 t  {& r* U8 ~4 d, @( _
    138 m. L: i$ m7 f" G9 D8 G$ o* k4 C
    14
    , ?4 b3 @1 w3 m) s15
    2 f7 p  i" q" c/ P8 f" Q% D16, L! S% y4 W  l9 a& O; u
    基于鸢尾花数据的实现及解释
    6 u9 e$ |7 i( v  d% c# [) V9 G# L% l9 U0 c7 d+ B( w
    代码如下:. o8 r5 M: f6 o
    $ ?% B" P3 B2 p. S* V' c. Q+ w( m
    1 # 导入模块8 [! w: R; U4 B. R! z
    2 import numpy as np
    ( {! p& X6 n6 t, f# k* F 3 import matplotlib.pyplot as plt
    $ @1 G0 t) v$ s# i2 K 4 from sklearn import svm, datasets
    4 c3 y  S: ?) y1 J( F- n 5 from sklearn.model\_selection import train\_test\_split2 K. K4 E0 {: u+ Q# [- N
    6
    % H7 D' v* J/ k& W3 Y7 u6 Z 7 # 鸢尾花数据
    3 Q7 Z1 s& t" C+ }8 m  i6 x 8 iris = datasets.load\_iris()         #原始数据; W% O$ i1 X% Y5 t! Y( x
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    : R2 R# r) s! X- e4 p% {; l10 target = iris.target
    : n& k5 i/ x* r# S/ V$ E11   b, S+ X1 a: @4 X8 z6 p. p( w
    12 #数组分组训练数据和测试数据& y. w$ L* y+ g% u( c/ q
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    ) |( @0 y# |; W14
    7 P% ~. V2 k# F7 z4 C15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist26 M8 c0 S2 p0 B/ l- |6 e, {9 ]0 ~$ Y
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t$ k4 q# G0 N) s2 j* z
    ————————————————
    # c. Y8 Z7 c3 c. A9 L版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    " |! W/ V+ N8 i% ^. B原文链接:https://blog.csdn.net/qq_43479892/article/details/1268117916 _4 ^5 M/ Q" O0 d& U' o2 c
      }* w: c7 g) D, J( m' ^- {

    0 Q9 \6 S% A2 [: k9 ]+ e) ]3 @( t
    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-16 18:55 , Processed in 0.417268 second(s), 51 queries .

    回顶部