QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3175|回复: 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
    支持向量机分类算法
    7 b9 n6 _% F3 a2 t( y6 n3 o! T
    4 ^, n5 u( Y; \🚀 优质资源分享 🚀$ |! V2 [  V: L8 J
    学习路线指引(点击解锁)        知识定位        人群定位6 ]( q" X' r5 h
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。. r: B4 v2 u0 x# N7 J# {* e' a
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    * n  a4 B7 J6 d. w' k# Q7 b5 s支持向量机SVM
    " f1 e/ X* o  E; X5 }9 d3 [; |" c
    支持向量机原理8 b" k, E) t. J- S4 E

    $ T2 l* `' J  ^% a. G5 \1 Y1.寻求最有分类边界8 _+ L& _& R& T* M9 r- O- |' t

    5 W, H: F# f" ~# u& \正确:对大部分样本可以正确的划分类别; W9 C/ q/ ^. N, C$ O1 {& r6 E6 }

    8 M4 a( ^  R) l$ P! V泛化:最大化支持向量间距
    / J7 e8 m) S! n7 Z. |* q- }
    ) u, u, r$ `) `- W公平:与支持向量等距2 h  S7 i* G4 u$ D. Y
    " ^0 a" A" N" `$ Z
    简单:线性、直线或平面,分割超平面
    ' }/ {; n" x4 V; L7 Q$ w! b2 m
    * c3 I  a1 j- _4 }9 c2.基于核函数的生维变换; g3 E* z- @2 y7 X/ j
    & U4 e+ l( ^4 }( g3 |
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    $ I8 e% E( K1 v" u3 s0 ^- f: R" n' P/ x; Q  L
    一、引论
    ! |3 q) }  q% d5 o* Q8 y# S/ d% l, d* V+ a  p+ k
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:$ Z1 n. K) q/ X; M' O; j" W& C

    - d% q3 Z4 ~3 L. E# T
    - L- n4 s1 o  ^6 \6 R+ o
    & r$ w: q: q" U3 k7 d# N+ g/ t现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。! g. O; l% a  i& e7 Z

    ! P7 v1 h0 a2 z) P) @5 }. }我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    7 p% m0 ?' M, F4 v
    , q# h$ ~# [9 l% R0 n二、理论铺垫
    ' ^5 [* Z0 D2 E/ T% ^
    4 u. C* P$ V' w4 M# e线性可分性(linear separability)
    # b1 q& }: k5 W/ X/ g& c! E3 J; c) b! {, w3 ]# }

    % K  M7 d# R7 w1 N2 Z0 M) Q1 S1 {+ n: o% w8 ~2 M# E0 {
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。# y; a& o5 t! \0 W/ H& ^5 N( j
    ! n% L1 r$ S& s: M

    & W$ h% {, B9 n. O8 `7 M5 I! y4 H3 H# g6 j7 D3 F7 t
    决策边界
    ( o9 |9 u1 P' M$ @( _7 x5 q! E  G% I% Z& n1 P/ ^- U2 x2 {; U
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    4 p/ I9 s% b2 ]. n6 k' D# f1 v5 Q, y. }% W  Y7 D

    ' n1 ~, c6 ?8 ?! U/ i
    ' U' r, k/ d, r, M9 F/ ^3 |总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。$ S7 @9 i, b; q

    2 v6 n( u! [& t6 A7 Z' ]支持向量(support vector)/ p/ O) ~. V" |) U; l

    # O7 n$ m! b- b. m* w5 e4 O在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:; R+ K: C: z3 G4 @8 E3 O5 G/ c0 l

    % ^, S  F3 P  r8 ]; M% F$ v
    , h7 ?; ~$ u2 R9 I& g$ m/ U9 C+ p/ V! z. `* h

    ( j( c+ F* ?+ b' Q7 F# g, a0 N% ]6 r! p
    核方法
    0 a6 w% _+ N6 Y. {. V& i6 |) _: r
    5 v, L  W6 G, U$ ?( h/ x
    5 I" }+ t" R, s+ v8 Q6 l: L" I" _1 F; P5 ~- x

    2 G( @$ Q7 S8 D/ d, F  H5 X5 V$ r( E, g" ^, B3 d$ a' w1 n
    以回避内积的显式计算。
    - J- ]& o8 c! X; i* I
    , N. ~# ~  i% P. j) h7 H# w- I; Z常见的核函数:, T9 |! i) C) R6 d1 u

    8 R$ \! I) M/ ?* R. S( U6 {' V: F* Z$ N
    6 Q+ [6 x. ]( ?
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf', Z: Q/ I- p3 p7 {9 Z
    1
    5 n4 u& U2 n+ [9 Y* U& x" U当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    0 L. n! o1 m+ k1 g) A' \# j+ m2 ?* J  N  H5 y+ a: F
    SMO序列最小优化算法
    $ p3 d( [. V! g! k
    ( E$ a3 P( ^; L1 Z! x, S
    / m- s: u" r+ D9 \6 N
    $ q3 d* h8 W  G/ u$ a" y; G! a2 Z
    1 f* D0 F2 P; m: E
    " y* K+ l: ^) Q5 e# K7 N
    ( l: N" p! w4 T4 a/ D/ h% ]  h% E
    8 Y8 C4 L& }% a! ]# \三、Python sklearn代码实现:/ L" ^+ f4 V4 Q) k$ F; f# s

    / N/ g5 H# r& z# x3 s& ^' fsklearn.svm.SVC****语法格式为:
    " v7 p$ U9 a- I6 Q7 q- y5 [
    5 o/ e9 W" T9 K& i7 o1 b/ Y  ?! ]class sklearn.svm.SVC(  *,
    " ^0 J, t: s/ _ C=1.0, 1 }3 n/ @* G7 M% ^" H( D7 {, K1 \
    kernel='rbf',7 z1 W- ?0 U& ~. Z# ^
    degree=3, 8 C' |* h* G8 O) W, `
    gamma='scale',
    ! N7 Z) O2 ?) g coef0=0.0,
    " x& S# v* W8 N! b8 p shrinking=True,
    $ ]5 e0 f; B- A" T0 ?; \ probability=False,
    " i; N/ Q3 a' r. u9 S+ S tol=0.001,
    % U# L3 s5 R3 Y: B% P6 b; I cache\_size=200,
    7 ]/ m+ b: v6 @, V" G5 p% ^& P4 q2 b class\_weight=None,
    " {9 ]- a( M6 \* V+ d. y verbose=False,
      D% P# J5 e3 ~ max\_iter=- 1,
      g" C; K5 K, p) p* I3 u  U* q. ^+ A decision\_function\_shape='ovr', 8 @% d- Q& h8 J* a/ }6 K- h) g
    break\_ties=False,
    , y: E( u. L4 Z2 u5 k$ ?6 ^ random\_state=None)5 s0 s1 \; O. b) r* \2 r% N* O

    1 p- A' \, v+ J+ r5 V10 j2 q) I5 x+ R5 {$ o/ {+ ^
    23 ?" y' f* M: o# W# R8 }+ W. A+ w
    3$ r  k; Y7 [0 Y& I6 s& `* D
    4
    - n  S2 V( ?. f# N3 k4 s1 v5  U/ ~5 O, g: a( F4 @! S! O1 {0 c
    6
    6 i$ _! I- ~  X+ i7
    ! h1 J8 m: v. Y8
    $ {) c3 j$ D8 y" |9
    ' r0 W& r8 ]6 _3 u$ q; x. `9 U10, A/ `3 B0 ?1 ^, t, g8 e9 k; i5 Y
    11, I$ C& K. X! ^3 ]
    12
    6 H0 b. n2 P" M( z# |4 j13" R3 o1 i5 Q; L/ \  M
    143 p8 ~+ Z+ K4 I. e8 |* B* e
    15
    9 G3 ?$ N) R! K; r" p3 D. [2 N16
    / {1 U& e9 @; @, g8 c* W基于鸢尾花数据的实现及解释; ^; d$ \. n# g' q

    5 j/ K4 b/ N! u; G代码如下:
    - F4 n' q- X0 c  M3 ]1 c* n
    9 R2 j3 K  X) j' F) R3 B 1 # 导入模块, s" A6 o+ N3 o, f& b6 \9 A, k
    2 import numpy as np! o. Q: c' M' q0 i
    3 import matplotlib.pyplot as plt# S/ z# c! [& b; b( U/ |, y
    4 from sklearn import svm, datasets
    ! A$ k0 u* ?% d0 y& U4 d 5 from sklearn.model\_selection import train\_test\_split9 U0 o) F4 t9 `/ i/ `
    6
    3 z3 J2 G6 m9 [8 c$ i8 m, a 7 # 鸢尾花数据
    5 c. i, e  g, U- t9 `( h9 E* `3 c5 } 8 iris = datasets.load\_iris()         #原始数据4 F# u# W) q0 x8 f% Y4 Q1 h
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    9 i) i' I& f8 y10 target = iris.target
    % F& }  v& C1 y! M7 ]11 " x- Z7 V* ?6 {2 [/ `) t9 n
    12 #数组分组训练数据和测试数据
    * o* n7 M7 s* @: H# n13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    & w/ Y9 R9 [7 C8 C8 W5 R8 Y$ ]14
    ( w9 A% M& u7 U% Q15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2) `0 h( ]# ^5 w9 I0 B5 G% j
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    + C- w! c" {/ K( A8 ~+ S, U8 h# v————————————————: g# X% J. O! C  z# }
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ) `0 c' E9 Z1 K8 _! ~6 Q3 I原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    4 v( q9 w( @5 O# f' c. E! ^3 O) K8 q

    1 P1 F4 l( Q* R3 }; N
    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-10 02:53 , Processed in 0.430610 second(s), 51 queries .

    回顶部