QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3135|回复: 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
    支持向量机分类算法
    ) A- `6 T3 L+ {: b0 L( z& G) a" I; i' h4 g) C" C4 N
    🚀 优质资源分享 🚀
    6 Q6 P) ?4 {8 A0 I( Z- ~9 U4 c学习路线指引(点击解锁)        知识定位        人群定位
    ' f6 E3 R& D+ U4 T& l3 Z🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。0 j2 E) `3 q5 T2 U% e) A' O5 t, ^! G+ g0 j
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统" L; ^' J( R$ [9 m) `8 x2 P
    支持向量机SVM4 I# J! T7 e' N9 E  A* n
    / u& e3 R) f( a  ?% h. @( _$ I
    支持向量机原理& F1 H" z% i- U+ s' ^8 h

    ) U1 ]; e$ }' e# m, P$ X1.寻求最有分类边界" Y; s) K) x" x2 [# w- o6 m
    ' H5 ~  D7 A+ r! }+ @0 @. r9 r. e+ i3 [
    正确:对大部分样本可以正确的划分类别9 K/ }7 y, t9 k& w9 A

    / `% a" T9 y' T' G* K泛化:最大化支持向量间距
    ; L' v+ r/ ]7 U4 `+ r, R% W# Y$ k6 M4 A# {' _
    公平:与支持向量等距
    & T( h# k" B% T( N$ c' b2 J+ Y% j8 h3 [+ j4 {) W8 p9 j" f6 Y
    简单:线性、直线或平面,分割超平面% v, a0 V* h2 S. D
    " V: N. p! ?) S4 m" {
    2.基于核函数的生维变换9 v/ S& B6 s6 a" j# p" X
    0 L( r/ V1 U% ^4 t; y* Z
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    2 Q9 l& l1 b: i' P  n. X6 p2 P" b
    一、引论
    8 p! _2 S( d7 L
    2 n! O- e# V* s2 l& I使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:# H# h& m; j/ _- w' ^$ b

    ) P3 P/ b, Q' |" ]+ b1 r: i- {* s$ j6 W8 B: Z
    " \# P' X4 M/ v; {
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。
    6 X+ ~) b- A% ]6 l6 T, t* q$ ]( L' L& m6 y& M4 R' |) `
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:! M7 t8 U. t9 b

    4 C4 z+ i0 R7 }/ j7 u; L二、理论铺垫' q. K8 o# S' }' Q1 u$ X
    9 P+ ^/ e# W8 {% p9 R* p" x
    线性可分性(linear separability)
    . g) H% o1 g7 o- n2 W+ u3 b$ V- x' p
    * \# `# y/ k& Z, I& H
    9 m) c3 S8 Z! ~& J0 t, L3 _; l  N3 E
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
    ' e) T/ p5 ?5 w) V
    6 e9 T; T) N8 p' f1 ^& H% P* \' ~! y8 E3 q/ v
    ) g4 j' Q. R% w, K, W
    决策边界
    - E6 D+ M5 f2 Y0 I4 j3 @# c# z/ w1 S5 N/ _: m# ^$ N
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    : ~( m; y3 T5 `+ y/ [
    + {/ B/ z- L5 Z/ q4 x. b# |* Q" n- }

    1 |, L  _" _1 k- x& U; _' b1 N  Z总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。2 y' t; L: O, i. |- E

    " j5 _; F% O  X8 g$ P支持向量(support vector)
    / K& f4 _; {: B1 `- W2 _4 O& O
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:5 t% l/ y) }- d& [+ q

    # h! z4 _- b* U. `) b/ i4 j: Y# x. K  {. k0 e
    , Q* m! q$ S0 G9 E6 Z3 K3 v, k4 N

      X0 z# H( s. q- X: E! z+ Z9 B  `, j: R  ]9 j
    核方法5 o# h, v' A6 C4 x: i+ G# l

    , b( H# E1 t8 G$ g# _9 e! k) L% F: v7 P
    8 E$ y6 N; g+ X/ f1 @
    6 n- r  W% L0 C+ P4 i$ w/ g$ a

    5 Q5 p# M% E* g0 R% `" M; z. t以回避内积的显式计算。
    2 X; u! D0 [7 L; x6 R  j
    ' D; X' c$ }0 C4 i8 j常见的核函数:
    $ T+ F& ]0 z$ x: p
    5 A" j$ m  ]( g7 d- F8 J, |( y* u) K2 @3 q" w9 _  _; ^3 |

    ' b6 R. _. \9 W, b/ xkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'$ o$ H0 s+ ~; j7 J' k: Z8 R+ B0 k
    1; L: U. p' l$ b' |2 c* a, Q, D
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。4 u8 e  b# P# o8 @% F+ E1 J2 E

    0 F4 N/ G7 z0 H) DSMO序列最小优化算法) R0 r3 r: r6 N( b
    7 m- }* N4 _2 W1 I# }: ?  W
    - }  [2 D0 B' ~& [

    - j5 N; n" h; s% j. |) O! h- _8 G
    9 h1 f4 y; _* t/ }7 L8 b9 h* Y4 w) f( t1 L- h( _

    # W/ h9 G$ P/ h5 C, B& ?* [, C" v! ~- K
    三、Python sklearn代码实现:
    ! h8 m+ s2 ?' g. o8 S, C- l* ~, }& \; m1 q! }; A6 k+ Z
    sklearn.svm.SVC****语法格式为:* ?  K6 w) y# Y$ h
    * W( r4 X5 i% {$ s% a
    class sklearn.svm.SVC(  *,
    , ~' N3 T8 R8 i) s' i C=1.0, 4 g& k& N1 c* G+ T
    kernel='rbf',1 G' ]4 V6 y$ }( J0 z. W
    degree=3, 5 W# T( P+ ~  d1 n0 n3 }8 V
    gamma='scale',
      \# N% F* r& o0 m# i/ p# I# [ coef0=0.0,   U% q0 Q5 ]) K# b% K7 G- S
    shrinking=True,
    % u0 @! S8 B, t5 z- J probability=False,
    # s) E& m4 N1 L; l2 P tol=0.001,
    / _5 k0 `( G* M cache\_size=200,
    3 Q- V2 R0 H6 _: u% S class\_weight=None,
    9 |3 {3 i  e4 |. [  P3 Q verbose=False, $ N' ~3 I5 D5 r1 O/ r$ y
    max\_iter=- 1,
    + a( X, v6 X& q9 B' C8 Q- v# u decision\_function\_shape='ovr',
    + S! s0 o, q7 C" e break\_ties=False, - a4 B- u' A9 Q3 d& `3 e: K6 ]
    random\_state=None)8 b0 l1 P; B) b

    & b* Q* A8 w+ d0 e2 E; l1
    ) f' Q( X3 ?# N2 f- E2
      Z8 }* T$ P* ]% C* [3
    / n- G3 T$ ]+ o$ W* S# [, J4; n" T" i5 B1 H
    5
    + a( L# ^& K- @7 _6 d1 d0 \# P6
    $ u- n& |4 S( R4 w/ Z3 A" A2 s7
    " P) k7 ]( Z* l  b3 s8! F) s% W( O% ?& s! T
    94 q% M" g4 n8 X+ B
    10
    " E& S5 h  k) e  H6 L% b# P113 l9 `3 H) P/ l: }( n8 C, Y9 O
    12
    - S& {+ f. M( I7 o. h2 j13
    4 i) _$ {& t2 M# a14
    1 |- m5 x+ l# ^3 I) i4 f8 [15: \! e% l3 I" ^% V% [* W, q  A
    16
    : l3 t+ Z+ \0 J8 W, [3 R' E基于鸢尾花数据的实现及解释
    0 O1 ~/ K0 j1 i- K6 R0 t$ @# K0 k  D! o: e& W+ z, w$ l9 {- v
    代码如下:
    6 v. W$ @( i, k9 E" h+ R
    7 `2 s0 e' a4 c5 g+ a/ ^& P- e  N 1 # 导入模块& l& Y- y' P5 G! |' Q
    2 import numpy as np
    ! ^3 [- H4 n, a( s" w9 f' ]/ C. C 3 import matplotlib.pyplot as plt
    * p0 x# A) U* J- z4 ~ 4 from sklearn import svm, datasets# \6 p4 [% P. M0 `8 ^8 E& T
    5 from sklearn.model\_selection import train\_test\_split
    # c: R0 Q* J. n2 G' X 6 6 i- C" s  {2 [$ Z4 M) E9 n
    7 # 鸢尾花数据
    + a  f# i$ l1 ^' y 8 iris = datasets.load\_iris()         #原始数据8 O3 ?- `% B6 M- s( a9 l' x
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)% U( T) h7 R( o7 f8 c* a* u
    10 target = iris.target+ w' |  a/ J5 P& b
    11
    ; d5 m9 u( ~& s0 d8 @5 W% i, \/ C12 #数组分组训练数据和测试数据
    : O2 z, O- l, N- c0 w' O13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    / v- m" z  m1 r9 y" _$ r" ?* V14 9 {4 L: Q0 f, H/ r9 l
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    # ~6 F* K  a" j9 {% c7 {16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t4 k8 Y  {; g! K. c3 _
    ————————————————/ I$ C! b8 }  T& p  }! B; x9 }: n
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    $ b9 l: K* J. p) f% P8 ]0 E1 `3 w原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791/ L& O& V1 E1 k4 J2 G
      |, H" G: r& U; d
    0 u: ], t. q! 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-4-15 07:19 , Processed in 0.384126 second(s), 51 queries .

    回顶部