QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3139|回复: 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
    支持向量机分类算法% G  H3 @# ?. T' l" y
    / w1 H6 W! I+ x$ ^% q
    🚀 优质资源分享 🚀  q% t/ o8 a3 n6 j% q
    学习路线指引(点击解锁)        知识定位        人群定位( z: e0 K# w# H) Q5 {: t
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    ! u- s) g" b; A# r) N&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    4 Q6 l. P4 R9 B* n+ f( c支持向量机SVM& v: |4 g6 \" s/ v; T6 G4 n4 l

    # x% B1 z' e" h/ w7 o支持向量机原理
    : E- j" Y+ d+ r9 V: f
    / W' ]2 |! J$ v7 e" m# h+ z6 K1.寻求最有分类边界, ?! ^0 f) ]' @0 Y* g* r
    ) h# I1 H2 q4 Y! K: M  J  C/ Z
    正确:对大部分样本可以正确的划分类别  V, X% N# [" e) Z$ G4 |( y) Y
    + m: Q' l% F1 [
    泛化:最大化支持向量间距
    & E. N* l# B2 h0 F, c  r! F& I0 J1 M
    / i, t7 p+ S+ `" `; K0 l/ [8 d5 V公平:与支持向量等距
    ; K; |3 k* Z- ^0 i7 M% R- V5 j. g3 w- z* e9 ]: O2 G
    简单:线性、直线或平面,分割超平面$ h7 |/ x% K9 L& u. ?& v1 W1 B1 B( c
    * y: e  ^# ]5 a% _- `
    2.基于核函数的生维变换, U' R' a) J! R! m& L; O) f
    ( g1 J4 t" A" R3 K2 H
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    8 T+ u' j0 a* B) ]* _+ h. V: G( ^6 s& H3 D. C# n
    一、引论
    1 o" t/ V2 R+ o- r& F8 e
    $ h0 |( ?" C9 z  [8 X使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:1 a! w) }' F1 u/ N0 {* A8 S- S

    / }* o# L, E7 |: c
    3 D: ^) K) r1 n! y" J' n
    % V5 h3 f2 V' A; ~现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。
    & D2 h+ N: F$ h3 ^6 M
    ; ^3 k& n: M" P0 i( w我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:0 @3 S/ e9 {  u0 |6 ~/ d

    8 L6 {7 P% F3 L- O% m8 I9 {二、理论铺垫
    3 Y' S  E( G( a6 E# |1 g
    ; s7 I7 [% ?7 q* S0 f2 k/ _( [: k线性可分性(linear separability)" l( }$ I* z- N
    $ f, o" M% V; k3 L! }1 \7 e
    ) S2 y' a- \/ @+ c+ o- i, a
    & [" d4 ^% n5 h& U& o
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。$ f) G9 g. X" C
    / M# A6 E$ j- K1 }6 B

    3 x' ^+ U0 i# c" r
    3 ?2 x- c0 {( f& w8 c) n$ W决策边界! b/ p4 N. ^# T: T4 t$ x; F8 N" @
    $ X3 S) n( ]) V: k" ^, s
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。4 H: O+ J3 c6 p( c, {0 L

    * T: l' j) u5 J/ {- o& Q- B- }6 J
    6 G# D2 w: k! D! x0 ~1 b5 N, Y
    ! c* n  q& R  O/ g  Q1 K总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
    " D& `6 i1 P7 x' ?0 z. ?$ o( I7 w6 L+ ]
    支持向量(support vector)
    0 Z& h6 U4 Q4 x3 d$ m* z6 `; K2 ]; g* h8 N* j, o7 z' Q  X
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:9 p4 D$ e" _; M1 M) q

    ; |3 R# t3 @# S& L) K- F: T; ]0 ^# P
    0 Q" g/ i" J6 \& z0 R6 s

    . |9 j7 t( l# V! }' v' D% ^* v! z* M: {+ _! j: v8 d2 a) g* c
    核方法% T- M7 V# s* [7 h  `

    6 @* ?. o* D. u! A6 J& k6 r; Q
    - W: c2 |$ x. v  \' [% L& M
    2 h" s& m4 L* [+ b4 S5 Y! p$ r6 Q4 v. z& T4 s( ]1 J& t0 E% W, }

    6 S2 C% ?$ a2 t9 ?以回避内积的显式计算。& }' y& h$ I/ d) M9 N
    5 r; m5 U2 L0 W( }8 R1 k+ Z
    常见的核函数:) x9 d- R: n; q7 a

    , K" S  ~9 b: l. g4 W3 [% g7 a" Z& f4 K  K) d8 r6 O- @" I

    8 H. D: l" k. K! Okernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'3 L, X. h' q$ d0 i- I
    17 s4 c! X' Q- A* P/ ~  a
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    + h2 [& A/ H) @( j" i( {: S+ @  M: e0 v
    SMO序列最小优化算法/ T& \8 }& F% o1 Q, c0 L  }$ U

    7 O3 f0 p- s5 @. q
    - _7 e3 b+ z5 ]2 w( g+ U8 |5 S. D, [. Y3 d
    0 s- @: ?1 J% \- l

    + i4 h8 y8 U: b1 U# J& E: G& O) m* R5 z5 ]7 D; L# F) B0 u

    , ?6 Z" K, M* E; J4 w, d$ G% ^三、Python sklearn代码实现:
    , W( O: @* ]5 t! E! N* G7 Y
    $ [# T3 W6 [2 g: T# Y' w9 nsklearn.svm.SVC****语法格式为:2 ]* @$ K7 B( [2 n; j

    - M: D/ w6 h: Y1 rclass sklearn.svm.SVC(  *,
    $ z8 V) U& v( ^ C=1.0, 3 d+ G) H  N7 w. y  }; b3 d
    kernel='rbf',. N7 z% S8 A2 ^% x' }% d8 t% D
    degree=3, 6 O: u: E. M& C+ ^) g
    gamma='scale',
    7 l, `. J/ f( J7 r coef0=0.0,
    . i6 A7 E) J' n* Q9 `+ M shrinking=True, % V+ r: {7 m* b' o( z9 n: M& {
    probability=False, ! T$ F0 T) V' a# A# ^+ ^" h, L; {5 h
    tol=0.001, $ h' G. V7 ?, G1 b  @& o$ R8 _
    cache\_size=200,
    . @( E' w8 `0 v, O% r class\_weight=None, 9 s; u6 p4 S5 l2 A; F
    verbose=False,
    7 W3 S# v! N9 [9 r, ~* X max\_iter=- 1, . E5 n2 _. R: U3 i# G9 F
    decision\_function\_shape='ovr',
    ( U9 r" C" m3 [& ?6 c2 m break\_ties=False,
    2 f0 m- a! G0 d$ } random\_state=None)
    + i8 S7 b! D4 v5 U9 v% e6 e: q0 n7 J
    7 m& |  J: E+ }0 k( J2 z1# \) n3 W8 r% M+ D5 q) _. ]) @1 c$ P
    2" v' K1 S* i! Y8 c6 v$ m1 x! z/ I6 `
    3. ?; o# k6 \0 L6 m* v# ]
    4$ Z& j0 o% x( \  O7 e
    5
    & {, z1 N8 F1 V' k) {- g. J6- [) D; A- a7 a, {) l6 z
    7( q/ f! o+ Z9 l# X& s
    8+ C+ j. h/ g1 N' V: u
    9: `; b2 e, v3 b8 x
    10% V; L6 C5 f( S: z+ m- c! F& f0 u
    11% _" \/ \& u7 Y" F4 V3 A0 G+ b5 Y
    12* P. I0 P9 ]4 t  Y$ e% ?5 \
    13" S0 O* Z  o& b' T9 v. z. e2 X" E
    14
    ) c: H9 S& B+ \15
    6 |0 q1 j3 h/ i2 Z, k- L/ a  C16" f0 z: D) A8 ~
    基于鸢尾花数据的实现及解释
    0 n4 T, |& m" N9 d$ Z" q( L2 i5 c4 E9 U2 ~  G6 E: Q, |
    代码如下:' a  B  }! Q% C; c  ^7 `

    ' b" D8 a1 k5 e 1 # 导入模块' a# ~. \+ R0 I: v5 e* C% P
    2 import numpy as np! L; D: n7 E3 G! X, k/ s
    3 import matplotlib.pyplot as plt/ ^0 H3 L( q1 k( g
    4 from sklearn import svm, datasets9 i2 l4 m8 {% |0 Y  l
    5 from sklearn.model\_selection import train\_test\_split
    8 o) d% e) B! o 6
    : _. N# }/ W% C9 b! c 7 # 鸢尾花数据
    5 k8 ?- b$ F: m7 K! X; Q 8 iris = datasets.load\_iris()         #原始数据
    5 {7 H% v) ^- z5 d, J 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    ! I8 m$ r& t  @% Q7 F3 c+ R* s# @* W10 target = iris.target
    & i1 Q5 \4 k" x3 `- |% O  Q0 r11 5 f0 A4 u9 V, \: R3 L4 Z4 F+ \; z
    12 #数组分组训练数据和测试数据7 k; C$ _0 x% ~% c% F- r0 ]
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    ( H! ]7 _% O9 n0 P9 g8 v+ c# S14
    ; o2 l% ]& I! i( j( Q15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    ' G0 x4 P; n0 D+ N3 A# t- b9 ~16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    : r6 _0 m2 V7 ?8 M' u( v9 G% y  x2 g————————————————
    0 E' U9 [1 ]7 M, `版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    " W5 M! ~+ X9 A3 l5 F. {原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791& R  U# W4 u! y9 U
    ' A  R8 k3 [4 F7 H* f& ]; Y

      p9 g  X9 C1 \  q8 M% J
    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-20 06:30 , Processed in 0.428384 second(s), 51 queries .

    回顶部