QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3184|回复: 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
    支持向量机分类算法. w% M$ p9 c8 ^) B! W8 M! Y# R6 i

    % W$ m; j+ I, J9 {🚀 优质资源分享 🚀* q0 {) f0 @2 r3 f
    学习路线指引(点击解锁)        知识定位        人群定位
    5 D+ e' d5 d& h4 y🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    6 ]4 `; f( ]: ~# H" h&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    ) ]' k7 P% t* U1 _7 x支持向量机SVM
    , ~( K# Y* i' s2 R  F1 R1 q7 `- }! k" q7 t
    支持向量机原理
    7 u2 T- E$ U' G. V
    4 F6 [( S- e( i- t6 g1.寻求最有分类边界
    5 ?( O4 M7 R$ ?  s8 U. `0 ?: r# [3 O2 y8 U( x+ _1 [# |
    正确:对大部分样本可以正确的划分类别) Z9 l0 ?0 d0 `7 P3 D. D& z: D; M
    4 a6 r' u% {7 x: J! x
    泛化:最大化支持向量间距' _$ N* M) F' V3 i$ U1 D+ i
    ' w* h* p: p' F8 ^
    公平:与支持向量等距
    9 M+ j7 R) @2 V, l6 l# W6 c7 X# `6 J+ ^  I. l3 s6 a
    简单:线性、直线或平面,分割超平面
    - i0 c7 j3 S: E' i
    1 R5 @1 N$ [3 `- v; _2 Z, |2.基于核函数的生维变换( s+ D5 Z/ P+ O/ j7 ~# A
    1 T; o3 ^' J& `
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。6 g% M+ t- ]2 ~' B/ Q; s0 c' f, R, l8 B
    2 P2 W" K# h2 h4 d/ N" ]
    一、引论
    % |# v) Q& h% c( \. o1 _0 ~
    : g0 B5 I' n, r使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    / `- E4 S: U6 Y9 R3 g( |' c- L5 [/ ^: n
    7 f7 T+ d! }/ L  R' N1 o' v

    # l: l8 P- D; {现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。
    : M2 h; ~/ P! V( V' Q" |0 B$ y; K" ]- l7 J! p& r) u
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:; U( _, i' [0 f$ b( ?9 ^6 m- [
    + J% I6 l3 _6 G& x" F
    二、理论铺垫
    : M! u+ U9 r* }; {6 m4 [. \5 J( X5 I; G! a
    线性可分性(linear separability)! h* B" w# j6 O/ Z

    & C2 K% I0 m. g2 Y' U; Y' M
    * n9 n1 {6 N9 r2 S9 k, I0 q( d4 t( ^- T" K* ^
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。/ d; c4 o' ^& \4 o. d2 t
    % y) }) z$ X, i
      T- x5 S* {) G% k$ |) r
    / l+ h, f( P  U- {; t8 F
    决策边界
    2 S8 I- M. x5 D+ M1 Z& E" _9 U$ P% @
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    2 E+ z) w7 @* f4 `1 l* R& o& e$ ^/ D+ J- H- W8 o1 ~
    3 d  E$ H5 J& j5 g' t

    ( Q5 G+ R6 U. Y总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
    ! s) S3 O& i7 Q/ g1 k6 B
    ) A* Y3 C2 Z/ q, ~- x支持向量(support vector)
    5 p" L5 f$ r1 Q1 A# Z
    : s. W2 ?: e3 x/ B) x$ L& Z+ K在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    2 Q9 O, n- f1 d$ j& K8 }( ~6 C  U1 \. h% U5 B: e2 z/ @
    2 V" i9 j; \8 m

    3 P3 A. {7 T7 B9 E  y, Y1 ]0 }) V, z/ }

    - D( @# o; y& w9 v% @核方法
    : _8 p" N; z0 l
    $ ?! D& W8 q+ b; A! l3 s* c2 H# h

    . _+ E' u% o* @+ G2 Z5 P$ N
    ; F: Z3 @8 v) L3 G- l5 T0 u( ?3 k( K& }; ]$ B9 A
    以回避内积的显式计算。
    6 n* Z6 H" E) O. t# K+ e+ `5 E4 l" f/ y) s
    常见的核函数:7 v. `5 g+ r+ D, i- e: h

    1 z8 O2 d9 I7 Q. w( [
    + y' N2 S& w0 b3 \, ~1 N! }" Y$ M8 x' I( y8 d
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
    1 h2 P! f* K% M$ p. E" a1, J* j: w. e3 X* |$ A4 f1 M2 d
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    % U' U) T: f# P6 M
    8 u/ O  j$ n1 M) d- H' K: R4 y8 zSMO序列最小优化算法4 w3 T4 b8 D3 x* I  O

    ! Z1 D" N  _8 R4 l" {
      c2 H8 U, y7 V
    & a, n  t. X% `! p
    1 y' r$ O% S7 ]' i5 c, V+ {! F- k1 g; P' F
    * q$ U3 ?9 j, U0 z2 I) V0 |* L

    + L8 z3 j7 h8 P9 P- m/ B  g三、Python sklearn代码实现:5 ~' X1 R* t- J+ B
    ! M; p3 D* f: ]" W4 _$ ]
    sklearn.svm.SVC****语法格式为:5 e$ H5 b& b2 v& J/ q" f
    ( c/ v7 k% R; n1 y& t
    class sklearn.svm.SVC(  *, " w- ~4 c9 [; x) x2 ]6 |
    C=1.0, 8 c( H! l# m! m% O0 {% Z
    kernel='rbf',0 h" |; p; W/ k2 B! `
    degree=3, 1 k: u$ j! T9 ^0 O. a
    gamma='scale', 9 p, Q; }7 d+ }1 `6 f! d; b
    coef0=0.0, ) v* T4 t1 t8 Y8 }) P) ~
    shrinking=True, 2 l+ E" n2 X/ q7 Y* C4 p1 Z  R4 v' p
    probability=False,
      l7 D8 R7 `1 {1 ]& @/ I% ]# y3 F* ` tol=0.001, + }3 A$ b/ a" L, A
    cache\_size=200, . h7 H, j9 \, \- |
    class\_weight=None,
    0 S' ~' m/ A4 H/ {( @: v, d) \ verbose=False, 3 p5 J/ |' t" c5 z- Z
    max\_iter=- 1, 2 [# [) h* W. l3 g, B: ^9 \
    decision\_function\_shape='ovr', , v9 [3 Y  d: s* _0 ?
    break\_ties=False,
    , F1 P. u7 d9 S6 S3 G6 e random\_state=None)/ q! U/ q* _) H

    8 T+ {' r% h9 ?2 H$ o; }1; o7 x1 C( y6 r& b" }: w
    28 K. a' V2 H6 x. ^2 R; [; U$ H! Q
    3: H, Q( S% K: ~) i2 |% ?
    42 j1 Q5 I+ C" Q! l
    58 p: `; W- R2 U, S6 Y+ z4 O
    65 z4 A7 D5 }2 J5 \8 f  f2 J
    7) F3 D2 v7 L* R4 s9 ?% W
    8' H* e8 j% g5 o4 A3 F. w
    9
    & ^- D" @9 }$ O$ L) F) u  y102 k6 L, |( s1 @* Z8 ~3 Q- C
    11) e6 F5 ~2 Y% S! O) `# ~
    12
    ! _# N5 y! ~; b1 K: I13
    : p1 T# Q8 x/ n# g14! M9 ~1 g  z8 q# A
    153 S* h5 H& U: ~, R- K
    16
    : E9 Q- m: ]  s, b基于鸢尾花数据的实现及解释# T' O) E" H2 L  u% d$ ]0 ^$ C

    ( V( Z8 q; t1 l5 N8 |0 F代码如下:
      d  E! k# P: G( e( H8 E. c2 F8 I; h% r
    1 # 导入模块( Z; j# j1 f3 j7 b$ f
    2 import numpy as np
    + G& J, ~0 d, l- {7 A7 `& J6 x 3 import matplotlib.pyplot as plt
    % |  s5 W: t5 x' `  ^ 4 from sklearn import svm, datasets
      V$ t' e1 y0 H& r4 Z- z! z7 W 5 from sklearn.model\_selection import train\_test\_split, q% Q9 Z$ N# E& ~- k: f$ v2 }; O( Q
    6 ( k" c' q* I; N( A
    7 # 鸢尾花数据+ D' T% o" }0 m  F5 [2 d4 `
    8 iris = datasets.load\_iris()         #原始数据, A2 A# \# h" t# p- g9 J
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类). l& l- F3 `8 T! P
    10 target = iris.target
    3 z( B  H. C! d/ [. l8 z11 & ]9 o7 ?8 m3 f( e; t, M. ]* |
    12 #数组分组训练数据和测试数据
    9 v5 }  f9 ~4 s* H1 i13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)0 u8 Y7 M% W& ^: `. K
    14 " n7 N+ r7 t6 L. l  y+ R
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    ! P+ a5 t- l0 D% F" [16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t* F8 [# a+ b" l  R. g+ y
    ————————————————
    5 E$ P8 ^2 A2 F0 H/ \版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
      }4 c; h! J1 `! _1 r( C$ `7 ~原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791/ F, G: W% e" F) C
    + S( B  U  ?: b0 ^8 |& Q

    . u7 g- N1 p6 Q; v0 L! W
    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-7-29 10:15 , Processed in 0.331908 second(s), 51 queries .

    回顶部