QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3163|回复: 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
    支持向量机分类算法: _& z4 s/ W% x+ L1 q3 d: T% V
    ! k2 v9 u8 n$ {, R5 O7 y) S2 C- y* X
    🚀 优质资源分享 🚀
    + s; k" [% R) y' e. R7 N! r4 I学习路线指引(点击解锁)        知识定位        人群定位
    - c( Z  I2 W1 O( o🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。! K9 H9 z* m% s( \+ W3 z7 T
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    $ s% ^/ S' S' U: I4 U支持向量机SVM
    ! x3 D; d) v* C$ W2 z% _$ p+ F  ~5 q/ f- p
    支持向量机原理5 B# \& L8 |( R" O$ v
    8 U% r6 F0 x4 y9 @0 h, Z! D/ L
    1.寻求最有分类边界
    ; \- ?  s% l  D& ?" l$ X# b* j7 W3 `0 F& B( A
    正确:对大部分样本可以正确的划分类别- u& m  x* J' [6 e5 [0 \) z
    4 D& W6 t) k4 w4 O
    泛化:最大化支持向量间距
    ) V" Z6 b) W: U" i: ?+ c% U4 n/ X% q9 [; M
    公平:与支持向量等距
    " g. g2 |' ?! O- ^1 e4 E
    & ~- y$ k7 j' S  G- a; H  X简单:线性、直线或平面,分割超平面
      f: R+ ?! c/ Y! P
    3 Q$ l8 r( c, ]- M* O$ V$ F2.基于核函数的生维变换
    & b( j8 N9 h9 C; t$ u
    ' |# L4 }- f7 h6 i通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。5 g9 {# r/ K1 S6 c5 L

    3 I- k7 H0 d- z0 D6 V一、引论  U6 _! g7 P1 r) z0 P  ]

    * `; s3 O5 Y- p0 ^1 S使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    / L, |4 |8 C( B$ ?; x4 P! S* u5 P2 `7 W: S9 g& ^+ ^7 J! n$ n
    ! ^  z! Z& F$ g: d% L9 S: d
    3 X! o0 k0 `% z, I  `" q2 P3 u
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。" V: I. s6 V: I4 V2 m3 z) G1 M
    ( K% e( ?% F3 B7 C  B
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    7 s2 a/ x" L3 ^  s+ p& d/ a- n% }$ L: D6 X
    二、理论铺垫. B4 {9 ^8 n4 C
    $ ]- c6 v" \+ a9 i" U4 ]
    线性可分性(linear separability)
    ' p! K5 r1 ^& O0 ^6 \  }: Y; Q
    ; c9 Q& [% B& e- l
    ) p. I; W" U' A4 w2 @) [- j9 K# h% K# T. R  X4 ^6 A
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。9 F8 ?1 y/ p3 s, U

    % p- [4 U$ p- c2 m5 Q& s+ K3 P$ ^# O6 r4 x

    & A" V8 l1 s5 |" n决策边界1 S& Y0 h5 F! k' M$ y

    0 y/ F- W" p. J/ a1 k" VSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    9 ~3 r) r' u$ D, e! q% G
    , w0 m! o0 N- X; A( l5 \3 }: y8 R8 k% o

    # U" \* r$ T( d: l' v总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
    / a. X( O  H% S/ F1 b$ a6 R  }# V) }8 M9 d2 g! P: m) i* _
    支持向量(support vector)
    9 i% Y2 e6 E  X+ w$ {/ b  a6 h1 \
    3 N3 n& y' H* }8 Y+ L在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    % E* g6 x% f* q% y  h7 K) t
    6 f( f5 N4 }' L' A# w% z  Z  C- t' i3 ]3 P5 \# Z/ e

    4 R4 a3 J- d& X
    " \1 e; g' [( B& f
    + J+ e" K( m1 Z/ m核方法
    3 c6 b9 v: u' f3 D" J8 ~* m
    - Y6 Z) h) v) ^+ S
    . L, V' F5 n+ N: S5 f# L+ ^% ^
    1 o; c) H' l8 v, f8 D8 m6 J
    ! g. v. B7 R3 F, c
    7 C. m0 @0 b0 t7 h( w6 |- f以回避内积的显式计算。
    8 ^- S; E  s6 d$ ?& g  {7 H
    7 {) J. B) n  M- p6 |7 N常见的核函数:" U% x- B! ~/ l  ?; R

    / @/ t, @' X, O% |6 V
    6 J6 ^( j! n4 |$ W7 z2 C1 e' n, ~7 D5 W+ Z
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
    ! _( G3 u/ w0 k# e" I# |* z6 h( t1
    # U4 g. p$ B" n4 z当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。1 ~) l* S2 e) g7 N" k  v% r, H
    % X! o6 o" y* k/ t; _3 e
    SMO序列最小优化算法
    ; q4 \$ p  p/ o6 B7 o& }  h8 ^$ b% X' |. n8 [/ i$ b6 g

    4 E$ I' O2 C' ~+ Q* \. }* d# X- c! T
      n- I' p- y% |3 @9 h% z. y3 x3 e+ b0 x5 P( Q6 T" D
    $ H1 j# L) g. M. D

    8 K/ O  R$ W5 P; c. S9 ?3 g+ w+ P- b- a
    三、Python sklearn代码实现:
    9 s8 V2 J- G& B8 v0 B+ |0 f6 M# ~3 O4 l4 c- V' O% U
    sklearn.svm.SVC****语法格式为:- I' H; |6 C% S* G. J+ B
    1 a" C5 s$ _- y, ?5 v* p
    class sklearn.svm.SVC(  *, # i2 L( M' U5 n8 Q( M, w* z
    C=1.0, 4 W* L+ Y; H" v  M5 R8 m! a
    kernel='rbf',
    * W6 w% w5 [9 I2 b$ z# O4 V( W degree=3,
    % `7 ^% G* Z1 m; ?  ?. p1 l gamma='scale', : F' |5 M0 Q  B) l. e& z6 U* J8 j
    coef0=0.0, ) _% a0 y  D1 {# z
    shrinking=True, ' M4 |7 L" M2 W  E% _6 R3 O
    probability=False, 2 ]) n' z% ^" ^+ R4 A
    tol=0.001,
    * f8 u. \3 t& P) ~+ t cache\_size=200, " [: f$ K8 p" o( z4 s
    class\_weight=None,
    8 a& _$ C' L7 h; I* z+ d8 I verbose=False, # W# ~2 D7 P% J8 L
    max\_iter=- 1, ( f5 R! G) F8 V% l. t
    decision\_function\_shape='ovr', 7 i8 r& l5 U' H" n
    break\_ties=False,
    8 p4 G% |2 w* }6 m: \# e+ l3 R random\_state=None)5 v" N; l) `7 x. \

    ; a4 X" e$ [% S/ Z9 W1
    2 i( L* s# i& m0 Q( w7 G- b2
    ) ^4 q4 S- F! p3+ N6 u& A8 g, T" W# s& Y
    4! a/ @/ H. {$ i- F) j
    5
    + o/ M8 @; L' L9 H6
    ' X% l$ ~0 i2 a) a) B$ Z% s0 F4 A7- E! i; }  n- T0 a. Z
    8
    ; H1 a- u, V( @4 _( m/ G9, Z% t2 ?% _. E$ }! B2 H
    10
    ! q+ [- \' a2 N6 d7 L, w117 A* O& O9 V; F7 L" t  {$ l
    12: P8 |! P8 X$ y0 V7 x
    13
      d& P+ a& t5 @; i, T1 X14
    7 {/ p' e& |' f' X15
    8 U; N6 e! \. n' m$ A165 f; z% Z: q  B7 N) F
    基于鸢尾花数据的实现及解释
    + e3 C" u, t5 e3 e( q$ {  g3 X0 J( C3 a; C- \& |
    代码如下:
    1 u/ T+ m) s  p, w7 ?2 K2 z" @2 Q; ]
    1 # 导入模块  T9 b3 z4 r9 b) p
    2 import numpy as np
    $ \4 E% W: H) g5 F/ z; V, D9 G  k 3 import matplotlib.pyplot as plt, Z2 B) C6 \! v; @- k- g# F
    4 from sklearn import svm, datasets, P: Y/ [4 @! z' q
    5 from sklearn.model\_selection import train\_test\_split6 o( Z! D% H* X
    6
    $ W9 C1 M: h3 k3 T 7 # 鸢尾花数据
    & C' `8 B, Q5 x 8 iris = datasets.load\_iris()         #原始数据
    9 ?7 s) N1 }- }4 f 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    , W/ t% ]$ h8 I+ k10 target = iris.target
    + \0 ~0 @) ^' d4 E0 v11 . f% @% q# i0 D$ J- J" b2 w
    12 #数组分组训练数据和测试数据/ a: w) ]% R* Z. i% h
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    ' J* H: ?+ u' ]7 d# G$ h14
      R6 D1 v. Y, }; d8 t/ U15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    # u. z- M; a. n, w8 Y; y4 n8 R16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    . J2 F1 a( ]0 d% q1 o4 n————————————————1 U/ C+ K, G9 n% ]- B8 N- w
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ h) t5 ~" `3 ^6 r1 K- j
    原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791% q. r- V% R% h, Y$ h
    ; L5 E: R+ r, d# e
    , C  n* c1 T; i1 ~; R
    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-14 20:50 , Processed in 0.388340 second(s), 51 queries .

    回顶部