QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3245|回复: 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
    支持向量机分类算法
    ' M" A% V9 V0 ~! Z  T# }$ J5 ?8 M7 B! x8 L7 C) n# C
    🚀 优质资源分享 🚀
    * e" b6 z5 B# E  d" F, s学习路线指引(点击解锁)        知识定位        人群定位; k; B5 G' F: t) L0 d( a3 A# W" ^
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    3 n2 _0 R4 m3 z2 J! l&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    0 d: d% j) s' J1 p4 r2 k: |- h' u支持向量机SVM
    " I; _' z/ V; B7 h2 J5 c) O7 K0 U7 w6 _* [$ s* E& `! q+ O
    支持向量机原理
    + X; I* m; P2 b3 y
    , W8 x6 \. O  Z1.寻求最有分类边界. f$ [0 I( x+ ~. d6 b6 Y
    - J3 X1 }2 F, O1 d9 x
    正确:对大部分样本可以正确的划分类别  N0 U9 J4 @) o  a
    ; x0 y4 F4 Y1 A) {
    泛化:最大化支持向量间距( q& ]3 V8 t( ?! x9 w
      x4 f% J$ s) e. q' J) T
    公平:与支持向量等距
    - R! s; K: G$ P% Z! y- l7 n" m, j9 X9 l4 u/ \
    简单:线性、直线或平面,分割超平面
    $ X  {1 {+ [1 K' x$ M# W: ^
    6 O) E7 D3 P$ g. x: r9 h% h- [2.基于核函数的生维变换
      z5 V" O$ K. [1 P+ h7 U5 _& ~! Z7 j6 x) d. R# ~  |- L0 C; r( ~" g9 D
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。  D4 V" X6 ~3 W7 K/ T

    , J6 W# k# X; F0 o( p3 \一、引论; y& p: t. B! r; S3 {

    " Y8 N- X" |$ F使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:( v$ m  m- a* B3 J* ?/ y3 z, O( t

    & D; \) t/ X7 l- [1 f* w$ P. A- b' \) p: Z/ C2 P, L/ w( N/ W

    + M2 q5 s0 ]! n8 N3 P" C现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。- W$ r. p( y1 E* h

    - R2 _& t/ o. ^) U/ X我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:/ q1 c/ `! M* _6 ~3 H! v' v
    1 \( R4 s# x  q
    二、理论铺垫- p: r5 |8 P' L3 c( G: G7 s

    / k  }9 B* k' a) u; e4 h2 l% Q线性可分性(linear separability)' W9 o) y1 x3 ?$ ~

    + R/ B! r  o! b& {# v9 {% u' g: E# q9 _
    0 B9 v% a5 d/ m6 z% i1 r- l& h# p  W
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。" N& e5 a5 |3 e& [/ d& \
    4 i8 [3 s: c2 k% `2 m8 U, F# Q
    ) u, T$ [/ G3 _; [

    ' c5 }5 f! h- B% `决策边界
    ! }2 B' u  q, ^0 G2 V: k* h/ l" q( A* ]0 T; t8 l* }# W
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。/ o0 |/ h4 U$ B2 {( u; B0 X

    # O3 y; K# U4 j/ }% N- \' d: J: V& Y7 B
      I: f3 _9 `4 Q+ S' Q4 X
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。: N" L' W- ?0 ]+ T6 U
    : G. y, h' e+ `
    支持向量(support vector)
    3 r" o3 m. Q8 G' D8 G8 k& i/ V8 p* F  ?/ M9 z) ^" }  |  X0 D
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:/ f: I7 a. U# z, j: E# C: l! E3 ~& J
    ! a  p! }. _" e! M1 u+ ^

    + N7 q3 `. n; _+ E6 ~& n
    4 y) d. @% V* u' D. |! r1 [1 o5 O  R" ?0 Y( p* y& C) b
      H4 n% b  _' A: y
    核方法
    & V/ R, d# t( P- r" v8 `2 |) {9 n. p2 L2 ^. A! i+ w
    / P5 B0 A& z/ E" y

    : z* V2 U( P/ t8 Q0 F
    7 J; Z$ F" V  _, i  Y  Y$ w& k5 j
    以回避内积的显式计算。
    2 `$ I* K* E" u% U5 |1 e4 m
    " ]: A" o) X$ w, v+ ~* d& M- `常见的核函数:# E6 g( ^8 K+ I) r! i* u( Z1 v4 o

    . F3 k' U$ ~; V& I5 g7 n/ m( P  s% D+ s9 m! K& B% R$ h

    2 C' n* e7 V) pkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'" O% @, u8 p; L: }, J/ F, y
    19 g) s1 O$ I" M3 p
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    % s0 D7 _4 ]. O/ U, x
    - q4 D! J* f; J! ~2 CSMO序列最小优化算法2 D$ ^& V, v/ N- L
    8 E; v* D' i( ]& U- E
    8 X+ F4 B! r( L* n7 E4 o
    * X. g/ _; D2 p1 y# p
    4 d$ C5 b3 B- i: W4 \/ v3 x
    3 ~! B! @& e6 ]' s+ k. k' i
    9 b, X& |; b- n$ g+ e

    : V* c* r7 y1 ]三、Python sklearn代码实现:& `1 \7 y- R5 u

    5 V& s" p2 R* g/ t( s  a  msklearn.svm.SVC****语法格式为:$ m6 _) }, ~/ Z( Y. a! b

    ! c- s5 O( j# t1 }: o. x1 Z+ e! `class sklearn.svm.SVC(  *,
    ) Z: [9 p0 y- Y: o3 i; q C=1.0, " K6 |) c; h* U6 B5 c
    kernel='rbf',; [1 h' D! i3 s7 G# p! e
    degree=3,
    & [4 Y/ o. ?/ m* [6 @* N7 O gamma='scale', & q; K3 o/ M# |: T* V, f
    coef0=0.0,
    - p2 m/ c$ V/ G( ~ shrinking=True,
    - K: c  K, Y, u  w& A4 c7 U/ z, [ probability=False, ' B: ]9 h/ U$ r) G: R3 c( V' y
    tol=0.001, " k+ H/ B6 h: T; |
    cache\_size=200,
    , w* A" E9 G- w3 } class\_weight=None, & }6 t( m' a/ p2 E$ w
    verbose=False,
    6 W; B3 `9 U8 ]" d' Q* |% |) L max\_iter=- 1,
    0 v. M0 n+ I2 I1 a# y decision\_function\_shape='ovr',
    " L- ^+ \3 T& T break\_ties=False, + ^' q1 A! Y. v, l( s+ p9 [$ e
    random\_state=None)
      M) H9 q. g6 i7 U9 c# y* k4 C; r; \* F2 u& w' @; k! R1 ~1 w
    1
    $ U6 R$ V5 ^- g, l2
    ; c5 O- t  a. _% b' F37 ?9 o" i- ^! {9 W7 T
    4
    $ c0 p" |; t4 E54 J. W) ]$ n9 H3 H% e* h' F
    6
    ' T4 I3 E8 V. Z# V0 A/ P9 ?* T$ s7/ q* W! w% {' q! d. |6 f# O
    8/ D* S$ Z/ j% d9 t
    9
    $ Y$ w( t. L. y' P2 j' |( T10
    8 ]9 W( B  s) ]; t" ]. c( A9 V% H! T11
    2 P! h1 d; q5 I6 ^12
    # G1 t( g0 X8 R% l$ q! m2 w13
    : N$ I9 o$ l: T" v9 N( N' y9 e14) `* _! z  X& ]5 D  Q+ i- [1 V# v
    15' N; Y# ~& c6 {
    16: i: i. r7 ^  h# x& u
    基于鸢尾花数据的实现及解释
    . _" M& X4 M- Y8 @  r! {$ h
    9 a! t$ ~6 s3 p; Z$ f# `! p代码如下:
    , k8 F1 c# A, g" j6 U. H: m; V* B7 `  {5 {+ j( G6 e9 o5 M3 I5 r
    1 # 导入模块
    / c9 e3 T" X, i' G 2 import numpy as np% r: Q. W2 C4 ~& o
    3 import matplotlib.pyplot as plt
    2 W  O# D- @3 K4 v/ M# \& S/ H 4 from sklearn import svm, datasets
    / m1 _( [! h! a# H 5 from sklearn.model\_selection import train\_test\_split
    # Y1 ?; v* H, t0 p( b 6 7 @* J4 i" w+ F! H' c' J- o# l
    7 # 鸢尾花数据
    # A! l; c1 e* J% @' J 8 iris = datasets.load\_iris()         #原始数据4 S3 q8 O3 a0 u( m, t! H2 l
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    7 I; h( R1 }7 N! B" u) |10 target = iris.target5 F& K( s5 B7 q: @/ Q
    11
    % M9 z. J/ y8 R4 y12 #数组分组训练数据和测试数据
    + o( J, r0 M' N" g) j9 u# V# K13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)  l  Z: ]) B* v) b- |/ N
    14
      X# X$ k8 i; l/ x15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    8 I, h  i5 N. _& P/ a  b* `16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t' y0 u  J( _( r
    ————————————————, C! p+ g1 x$ \! G1 ?  w
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。* @. z2 n4 r" b1 h; u. V
    原文链接:https://blog.csdn.net/qq_43479892/article/details/1268117919 O0 P/ Y! y9 K2 p4 o$ X  o

    6 a# `' w% {- F- [0 s
    3 }( Z7 N) g; D1 H2 @8 _
    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-10-8 07:24 , Processed in 0.926522 second(s), 51 queries .

    回顶部