QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2564|回复: 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
    支持向量机分类算法. q+ \1 A6 Q  W2 o. L* m+ B8 U
    5 ]* b( j, J  Q
    🚀 优质资源分享 🚀
    - a- d! c* h) J& P" K6 o0 `1 X学习路线指引(点击解锁)        知识定位        人群定位) o& o% g5 ~$ x4 j- ]
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    - F2 R) B. m- _1 i! e& ~4 A9 |&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
      P7 D" v- v' Q5 B5 v: B" ~6 ]支持向量机SVM- c1 X1 n; ^4 o
    / `% l+ T$ q+ ~& O$ w  z  L
    支持向量机原理: w) h0 U$ A/ _: J. m. [6 R$ v- i% H
    $ }4 ?8 ]) L, I- @0 I7 x# r0 P
    1.寻求最有分类边界, E! f2 \: B* C: @' M

    * K8 }. D& N& k9 [- |/ m正确:对大部分样本可以正确的划分类别: x; P+ B3 Z5 n4 M& d% P; I
    6 W' Q& J  W2 e7 K5 m
    泛化:最大化支持向量间距
    . @" x; a6 b. c2 \1 A
    8 {8 b6 x* {& z- E+ W  }9 \公平:与支持向量等距: W7 ?: T/ ?$ t$ e/ q

    + E! ?0 \% O, L/ q) @简单:线性、直线或平面,分割超平面
    + T9 y7 P+ a, }7 o" ^) [  v; o: h) O4 [9 S
    2.基于核函数的生维变换( W" s+ B* S, z8 x7 n: P) E* n
    , ~& ]3 D# W, T3 W
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
      h7 m' G, ~) p6 w+ Q( a
    , W" i' H) \  F0 D一、引论
    9 c# n! T2 x: p) A2 _& a* B, i" Y9 \
    ; Z8 u) O; d8 J* J% u使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    * |# T# r( I" [  j+ e& k1 [
    ( |  A2 W+ |2 `! R, N
    ' B) y% ?7 x- {0 T8 I3 K% h- O$ i+ X8 l, X7 Q7 G  d
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。
    - G3 }% C% E6 n: k( P, m1 R# @5 B- F, s9 S7 c$ @5 \- I
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    / Q3 J2 V- i/ Z4 L" I9 X2 H, I5 j' t; R+ b+ r+ R+ s, h+ s: [& h
    二、理论铺垫
    3 {7 P8 j  s" X/ Y0 u
    3 d# o# T. W4 C: [2 \线性可分性(linear separability)
    - T  w6 J& e& W9 k3 n$ P
    3 e1 j; n! H: k6 d6 v2 T
    * [$ f; V% q" }: t0 [2 y" m$ [0 G, R
    : b, _  M# h  V1 p而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
      x% t* H  [2 L* e2 U  x6 r- g. d  B( Q' L

    3 n! i& W0 T; w0 J
    - _. P5 Z8 j6 P$ P决策边界
    $ H$ P! f/ D# d% A; A! r
    ! ^( e% ^2 E& k5 mSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    7 [; f' ^2 L- j- J7 a" F6 v! q( l% z5 B/ s* T- E

    6 G5 c) K6 `8 P/ j8 B: E9 c5 k$ [; l4 s/ ^) A! I& [
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
    2 K! l* [  p$ ?' c1 C6 [0 X( @4 x! t( Y0 c  e) o; m
    支持向量(support vector)  _  A% t; D  X- b1 u. |2 d
    + H: [7 G+ @  s! B, m# b, O; p
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    4 E+ C; B, [6 _
    $ [4 T; w$ g( ~2 _9 H' ]0 j
    ! R# n, W6 L7 C) L: T6 U
    7 M  n& b1 _) k) m$ N! R) p8 k. g3 W5 J0 Q
    4 N$ U+ ~2 x; R: ?4 C
    核方法
    7 A* F. k3 v+ a- T5 Z$ }. f4 V0 ^+ z* C8 p- W4 }1 X! S. p7 P
    6 |, V6 x& G# y- U' Y' `/ y
    ( B3 h. O) c7 i
      k- k, P' [7 J& L% Y

    ' [8 S5 h4 u( x/ e1 p# p以回避内积的显式计算。
    8 e0 B0 ~1 b: g) m( Y7 e% O0 t  U- X2 J% I9 N
    常见的核函数:
    # O; P* I( c4 }( J% u3 ?3 q0 j
    1 q& w  T/ i; L. Q0 d' q) ~0 q+ `& A) h( s% O. u+ N
    $ o- z! t( Q8 L, p5 n1 i6 d
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'! W4 o7 t2 Y+ s( ?% o
    1. P3 I) B% a$ k- c7 y# w
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    & S4 n& D  T8 j* \# N! C5 N2 s2 A% R8 U6 N
    SMO序列最小优化算法. s; u& f5 I1 c1 J( y

    - g; y3 D( Q. T! t) c
    * ^* x& d1 p4 p; _+ t8 {  u" P: a$ M( n7 i8 d" d
    & |# a. r. |$ j; @" E& _8 K

    * @/ \+ x& k0 @" V
    * _' c* a" d3 o* F
    ' L; b8 p# b) L- D# B- `: [三、Python sklearn代码实现:4 @+ j( k* o- ?, p8 a# j7 }

    ( g0 [1 S$ O7 a9 S! y# P8 Rsklearn.svm.SVC****语法格式为:& d4 Y, u1 A+ q! N% W4 G
    # ?& @+ S% t0 O! u
    class sklearn.svm.SVC(  *,
    - `; l; h( h: R: Q C=1.0,
    7 }. e6 ]8 x4 g" F5 l' r8 Z9 j kernel='rbf',
    3 j9 A- E. {0 I degree=3,   `- ~& `& ?" F6 O4 E9 q
    gamma='scale',
    ) C) C# t7 e: `( s& ^) ? coef0=0.0, " Q7 A, o+ }/ K3 {* Q  T
    shrinking=True,
    1 l: O3 ^8 ]3 b6 J: _ probability=False, % }" l2 F! e* c! ^
    tol=0.001,
      g  y4 Z1 [- g% S  o, U9 E$ N! Q! i cache\_size=200,
    , p' p' f* B8 ?: t4 L) k class\_weight=None, 9 p7 y% r% P# ^/ G$ O7 \$ ?6 \
    verbose=False, 3 g( Q) d: R9 x2 h+ n5 D
    max\_iter=- 1, - P8 e( n) [$ t; W4 a
    decision\_function\_shape='ovr',
    . i( z3 w4 A3 u. p4 d break\_ties=False,
    * D( r% j- q6 \  n* t random\_state=None)
    8 d! x8 w. K8 [8 P  C3 O/ [3 [, {* [+ r, {( l) i6 p# i
    1) k7 A$ z% y& [" e
    2
    & {7 d  C0 Z* ~: t. G9 r6 V$ @% c5 _3/ K! ~% f& ]) L; f/ g+ i2 l" a& L
    4- J; q) ^9 n! e7 W# y- a
    5  H5 Q7 c# }+ a* Y
    6
    ! |) b2 W) }! O* R8 J0 _! L7, L6 g$ i# l4 V- A2 |  k. [
    8
    & i' X  h5 }) ^1 _9 U9. |0 m$ i+ L- v! Z. r; o
    10
    ' G! {; D$ z( K11$ u2 P) ?8 i) i) H, \1 o
    12) Z$ j; ^; P: |' I& N
    13
      U/ `( O- Q  ]  g/ O8 T14
    6 {& ?; A; \# p7 }15) K2 U! s$ K5 o5 u1 O
    167 L, A1 D. z" M& E8 b
    基于鸢尾花数据的实现及解释
    8 n. k7 u9 T0 F# x
    6 V& R0 \0 w- m! C5 @$ s# u代码如下:0 D8 c. ]$ ^# y3 |' l, r" B
    % m1 b6 Y+ Q; m: }( b/ t
    1 # 导入模块9 R3 u( ^, p3 \
    2 import numpy as np
    , d5 c5 Y( m/ e9 \ 3 import matplotlib.pyplot as plt
    . W, {( I; _7 M+ b! A: \' d( } 4 from sklearn import svm, datasets
      y- W; U$ l, R! y( j) H( y* C0 q 5 from sklearn.model\_selection import train\_test\_split
      a  ?! Q' ?7 ?2 ~/ x( x& r 6
    & L, c6 V3 v( S9 K 7 # 鸢尾花数据
    2 }1 B. q1 |0 s, k* j' f9 l 8 iris = datasets.load\_iris()         #原始数据/ j. w9 [5 R' ?- q, @/ R
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类); G  h+ q: F' `4 ^) ]7 \3 ]" ?
    10 target = iris.target
    4 X1 U# Y& |" a: n; H11
    3 m& g; ~4 u1 b0 Y+ |2 Q12 #数组分组训练数据和测试数据
    1 C* K# E2 F8 F13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    9 z/ H  o% \' h+ P) X14
    / H5 R, }) y/ H& B15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist20 R2 N7 {4 i  r' F3 y& }
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    4 _; e% ^/ E6 a1 [————————————————. I7 B9 ^% @, B
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。. d5 a' A: K8 t. V7 {  q8 c& {
    原文链接:https://blog.csdn.net/qq_43479892/article/details/1268117912 u; G; {( h- A
    * ?% X0 p& D) U/ w/ S9 R4 j( G6 z
    ) b) c9 P2 s: D, i6 s( {
    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, 2025-8-17 02:59 , Processed in 0.518614 second(s), 50 queries .

    回顶部