QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3154|回复: 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
    支持向量机分类算法
    / J2 Q4 V+ E  k  a) x
    1 e3 k; B3 r2 u+ {  f🚀 优质资源分享 🚀  P9 T9 Y* d. j) x, W6 d1 R
    学习路线指引(点击解锁)        知识定位        人群定位. }+ K8 `7 V3 n0 Q! ]( z9 x5 Y
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    / b8 f/ Y" p2 s2 M( a0 I. g&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统/ R+ p, C- n  `) w9 G' [
    支持向量机SVM
    1 y5 Z* k6 \, x" L/ w: ~- r) r/ E& y
    支持向量机原理
    , l( m# b, S; l! X4 w4 m1 S4 Y
    # i" ]/ c- s8 j( H1.寻求最有分类边界4 k7 W! \9 p6 V& `; ~

    2 {5 |* ?: x6 V正确:对大部分样本可以正确的划分类别) C* T% ~0 s2 O# q7 |
    ( Y2 T; D- P+ ?/ q8 n3 E
    泛化:最大化支持向量间距
    - [. e9 x  H7 P; `9 {; R, f  R: d% E* R. ^7 L- f
    公平:与支持向量等距
    ( n' u, @5 [1 u3 _$ [9 N" a2 Y% i+ ~$ r
    简单:线性、直线或平面,分割超平面# v' h, p/ y/ B: z! t4 b, r) O5 o

    4 n' ?7 u( N& I9 B2 A" ^) ]2.基于核函数的生维变换
    % m6 v# V. ^$ r$ C2 N# n8 ~3 A$ ?* j. I5 E) I% \6 T
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    2 u" f( L3 q% J) a4 k1 j' Q0 N  s( B- w6 a, W) G
    一、引论6 C8 C1 [- S* f
    1 B/ ?2 J) c, w% r4 u& |. A6 n. x
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    9 n" {: i4 t4 b* G. Z' I: F& t$ Z+ N2 N( f7 B1 T$ [3 a: k* B( `( l( N
    - q- l- w6 k( }* r+ q$ `. B# @
    # |$ _) u. |) v
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。; }) L% O* v4 U6 {/ \

    * }3 ?0 {; p- k. G我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:- K& X/ P+ B" g

    + @# e! i5 U! z* b% R0 g二、理论铺垫
    5 E1 o5 T9 A5 V1 e
    # m2 G% N+ i6 Q5 E- }# c; t线性可分性(linear separability)
    : [4 b/ |- I' f$ J5 f: ^1 I0 \& B! M
    * D. i9 C0 G8 x6 l4 y/ B5 o7 W$ c; k0 a' E# @+ T2 L7 ~/ V2 R% l6 q
    - |+ E) t$ H* p9 e- k1 x) A, I
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。! Y1 ^& o4 s/ ^5 L+ s$ ~( E7 s

    2 C& V' X  P3 D" H" V! K/ k2 C6 a% c. ]$ w
    8 r& F7 R% i- q* ~. j
    决策边界+ [( B7 S; c$ j/ \7 V" j

    . m8 ^2 F$ E1 ?+ T' m$ CSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。. K$ z9 a: x8 L3 a; y5 t) `) N

    ) e% h4 M% C1 l5 m* M
    8 ?1 y. Z8 g8 M  d, j  `: d
    5 |8 {# Z" X/ R, c% }, p总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。9 o7 c( ~! i  s( y# m% v: j8 |

    6 u% Q- J) j) l2 b支持向量(support vector)
    8 V7 Y) z3 n" X% X- B" Y, M  @2 l, z6 t! R3 ?8 a* r. K
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    ' o* [. S( Z/ g) l2 F) S2 u2 y9 Y' X4 v) l: O

    - l2 I+ W! |1 C; M
    - _: ~9 F# l$ l1 j6 z% J
    . M" E: P" `4 s: F4 h1 b
    % ?$ U) E& V6 y  L+ G: U核方法
    + F: B" N4 c3 S6 _" r8 O' O
    : T: n/ t0 }; b' n5 M
    % |7 Z! V2 w. a+ |
    * M% h/ b+ p: e6 K" x4 }/ d% W1 _9 `& s

    , }1 D6 R. R. ?- y以回避内积的显式计算。" U9 M# ?2 n# b# A: Q! \

    ! e# n$ N' N8 o/ k$ W5 q" h常见的核函数:
    ( F- l# K$ @" c" Q2 y. z% ?) L
    ! P& s! U8 q1 L% y* e' ^6 `' v) m! p' X) P& Y! Y! ~

    ; W4 {6 {$ |2 [  j3 o, s8 C3 rkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
    , `/ O9 o; ]! }  T, @1# W/ U1 J/ ]9 E$ {7 C$ f
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    + }3 _4 \# x" u' ~6 W3 J( c- L# l. q
    5 B, O1 ]( M  n6 D; iSMO序列最小优化算法( o1 D1 B( [* ?; h! \8 l8 S

    ! i' Y8 {; O5 Y! g. t% N# }% |5 x$ k
    8 _6 O4 ?# h$ @: o
    : @) E, e8 |2 D

    5 N' V' H/ S9 [
    - Q4 k, n- v# e  T- o' ^' W  n: e3 s7 e
    三、Python sklearn代码实现:2 Q, C5 ^% G& `

    8 b0 ~* `2 [6 B4 j) T* Y$ asklearn.svm.SVC****语法格式为:
    8 G( i4 Q2 v& q! E2 H+ G2 h1 l7 z% m5 ^! P! \6 I: P' b3 S& m/ Y
    class sklearn.svm.SVC(  *, 4 p" }6 U$ P) o+ w" [
    C=1.0, & K- v) `2 u8 T- P6 B
    kernel='rbf',1 ^+ g" P* V: Z
    degree=3, 3 Q; S7 k: I  t$ V5 o
    gamma='scale',
    6 O, `, c* J% _( v* h  F coef0=0.0, ) H6 Y1 Y3 j& I; Z, j
    shrinking=True, ' {% {; R. i# o2 Q- c" t
    probability=False, * k+ j' M% d# {: s2 r3 K1 C' Y  e
    tol=0.001,
    - G! f3 y0 @+ a1 I, v, Z8 F cache\_size=200,
    3 d' A' F) ]) [  ~! T class\_weight=None, 7 t7 e# [! t' \; r- o
    verbose=False, . E2 B5 A3 f& ?' q- _
    max\_iter=- 1,
    " p  f5 h" r5 L  i) X2 N decision\_function\_shape='ovr',
    ( N9 J; ?7 m" |  Z break\_ties=False, 5 ]  g, C& W6 @1 [' n1 M7 a
    random\_state=None)
    * }( E) H8 Q4 s) m- b$ T$ d$ }2 {  ~7 G: R9 G8 _. \4 B
    1
      b3 {/ Q: c$ \2! U2 P0 \  e7 V1 L
    30 V' Z; K5 Y( ]- x3 L, n" r
    4
    7 C, f/ A' t& B- e( ~5
    8 {9 Q, I9 O' G62 z: G% s) k* z( l
    7* T: L5 P7 @6 J  V4 U! z
    8: O. @. T  r0 f7 f
    90 U* N$ l4 j9 y5 N" |4 ^
    10; w4 N, c0 s" Y3 a4 e0 t8 |' c
    11
    . [: r" O  Q3 R8 ], f# E  h12# ]) h  J$ G; i/ G
    13
    / `5 e' I; n/ W: h9 y  Y* a5 u% W; o14
      t/ ]) L. }; \. F4 \2 M6 B# A! x) L158 K+ F# w& D6 U  ]: }- v7 L# P
    163 I9 D8 A2 d+ X! o8 [
    基于鸢尾花数据的实现及解释
    # o  J1 W) [. J1 B' }) [
    " k# O. G( h$ L代码如下:
    8 q  \8 R/ d6 V% r
    : Z& S4 C" i& _, @! Y 1 # 导入模块
    $ @9 O1 D0 S2 _3 e( q3 F 2 import numpy as np
    1 l4 F3 ?4 Y8 ~7 \. ~9 F2 \ 3 import matplotlib.pyplot as plt
    ; b- D- m4 l+ `/ X7 C 4 from sklearn import svm, datasets. T: ~4 p! I. H; d
    5 from sklearn.model\_selection import train\_test\_split
    2 J& t/ f% O/ t7 B 6 9 `7 u/ e  W; Z+ n4 B! q' M
    7 # 鸢尾花数据
    2 ^0 w: g- U2 Y  ^6 r' _+ O 8 iris = datasets.load\_iris()         #原始数据& {) y0 Y. i5 G: t  C7 }8 s( v0 e
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)2 q# f1 c3 ?, ~: H) U9 s! ~( P
    10 target = iris.target
    & t8 \3 j3 Z5 c" N11
    * B6 p1 C6 j3 C, C  r12 #数组分组训练数据和测试数据
    $ B( T/ \4 o- V* u6 U13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)) i+ O9 Z9 A0 X4 U  v1 ?: ?
    14   P$ T) ]- Q- r
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist29 b/ g5 Z- ^" I' W! a, ~% @
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    ; A, C& M* v8 q, u————————————————
    , M- i* K( d/ k! \版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    0 q  Y+ Y1 U' o2 t& D$ ~: ?原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    ( v6 l2 f5 R( r& [, l0 D5 J; x% W2 q/ R  V6 t. w% l
    + c- `3 V' j) Z) C) [/ `
    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-5-25 10:40 , Processed in 0.324042 second(s), 51 queries .

    回顶部