QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3138|回复: 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
    支持向量机分类算法
    ! r! R3 u/ f9 E$ W/ z. O; q
    ( ]' J) @$ |. W: [5 Q$ I( |🚀 优质资源分享 🚀& I7 V( P: L- D
    学习路线指引(点击解锁)        知识定位        人群定位
    % [+ a  h. e0 a2 `1 ?🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    ( k. v- V4 Y7 L( t&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统; |; [, g( f' q# T. v" `3 \
    支持向量机SVM
    : g$ G9 S& \$ u; }
    ' Q1 s. s6 T0 l3 i) K支持向量机原理! a% {  R1 \& L- M+ ?" v1 ]3 W

    7 ?0 j( n: P" R1 T7 J+ j4 C- W! }1.寻求最有分类边界5 ^) O  e6 `  D. \8 V8 E
      m& V2 H( A0 ]( A! I
    正确:对大部分样本可以正确的划分类别
    ' F6 M, k- r( v% o* x4 ?% Q$ Y1 _' f/ p2 |; B9 A6 W
    泛化:最大化支持向量间距% [! ^' i8 H" F4 Q$ @
    7 u& b0 Z1 |1 m; ^$ c
    公平:与支持向量等距) s9 Q/ a3 d' }- f

    2 b6 g' d. b* Z1 A" ~+ [$ u' Z简单:线性、直线或平面,分割超平面: O+ D8 C$ b9 s" u- F

    6 W+ F. c6 c' e0 @  V5 j. h2 @2.基于核函数的生维变换
    ) l, [& V5 y% n" q% O0 H: B
    4 O& O3 O& M8 y  R; @- {+ @9 I通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。0 o0 M& I5 m4 e

    3 `0 w" C* K7 g7 y一、引论' S( V; r8 T4 ~$ `7 N8 Y, f% s
    ; y/ k* A8 a, H
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    - Y0 d# H2 j2 k4 W
      t  p' x) q2 O" d
    1 y9 p& [3 M& Q" d1 }0 L- `- m
    1 \8 M9 g5 M) ~1 u6 A1 L1 f9 [现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。5 `/ K2 ^) J. @6 A
    7 v* @2 N; K% c1 e! F7 {- w. q" @+ F
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:" i# Y5 l( _6 j7 {
    / O7 f6 j/ s4 e* K
    二、理论铺垫
    / n+ {& T8 |  d5 o( R8 B: O3 t6 M6 |, {* K; _" q; W& z2 R# @
    线性可分性(linear separability)
    ( {  k0 a" g4 O* F( P* X( N$ s7 ]+ y; K! F; ^3 Y' x" M

    + x6 X% J1 I. m6 U- ?, L  ?8 X( {- ?  I: r0 o0 u
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。0 [: D" `: r/ N  I" g

    / Z7 j9 L) e6 b% ~0 I/ P
    3 V! [7 t. L3 P0 K- t- s- u8 e) P
    5 W/ @# I) n+ U+ ^# n9 V决策边界
    0 y& U3 \7 ~, F3 B, N: d$ h# i7 Z- ?3 P- u. o6 {
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    - W* }) o8 T6 |5 g9 S* @+ _# h
    3 h' n  f. z8 o* f) P. e. T* X. R& \/ ~; g
    ; k9 K) h3 O' ~5 o0 W1 Y8 ]2 q9 W
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。0 E+ |6 X9 ^, Z. _+ }3 a8 G, |

    : Z3 o* A2 C) f1 p# q+ U% [% ~' a支持向量(support vector)5 D5 {' R4 w6 B5 z# T0 t4 @) I
    8 q7 s# T% N. w& P- h
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    0 s5 M* ~2 n4 c3 x. f& C5 P+ ^3 E  A

    % |5 l8 u3 j3 E
    # w9 ]* c' j9 t1 C: c" J- y$ e) y( i. ^1 B& a
    8 g, `+ y9 }% Y) b* b
    核方法- X% o3 h0 U1 q
    4 }- v% Q6 I! H' P

    / W  ?6 }" b, k. ~# \% j! E) J( y5 j+ S  o: Z

    ) K& ]; i: v& h5 H' o
    1 p+ I- q3 s; ?# _8 ?* o% x以回避内积的显式计算。
    ' C, J, x' A8 Z! H) _+ O2 b
    7 d( R& F1 d& h6 o常见的核函数:
    - R5 ?- j' U) V! m% [
    ( x5 h% w" f& l3 R: C) f! p5 J/ _) q8 ?
    2 j% Y( `. S8 o: z9 r1 N' t' L: x
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
    0 V0 C6 q" P2 a, u: I5 }$ s1
    " f' ^. \. M. n( ]" }6 [) }2 j当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    : q5 Q0 x6 O4 _7 C7 k5 ^! [# ^* F5 M4 Z4 A
    SMO序列最小优化算法
    & g5 z9 X1 i  y! X% r
    ! c' N% k0 C* ?" I' [( y0 e: G
    - S7 r/ Y$ A1 g' q
    # |8 d2 s8 J  S# C; A- l
    9 r% R& L' c' ], Q' O3 N, r" x! V7 n0 y* i* O# I8 o% m

    * M& P6 O: d- i! ~+ _* W6 a, ~, _- Z  r! a* W0 |9 V2 v, }1 z: F2 M
    三、Python sklearn代码实现:
    : m. A5 @- q/ x" V' y6 V, U0 C: X% k% o1 \9 g/ I6 h4 n6 I
    sklearn.svm.SVC****语法格式为:7 C' m1 ?+ u1 Z) W3 p7 ~
    5 M9 ]8 s4 r$ ?0 t2 v
    class sklearn.svm.SVC(  *,
    ) G  ?! }* p6 e4 G& s# B9 C+ j5 y8 x C=1.0,
    ! {1 ?' q- L, ]3 @& y kernel='rbf',
    3 K( B0 d; x7 H! ?. G degree=3,
    # E" b1 {( J# ], b% d8 q! | gamma='scale',   O$ J& F' ~2 i4 Y. A. m2 u
    coef0=0.0,
    ; _6 T/ x, ^) x& t shrinking=True,
    & g1 w2 `/ U) h' ?' a  Y  Y probability=False,
    . r5 @( \1 S3 p1 t7 @/ e5 B5 @& j+ x tol=0.001,
    $ P5 b3 D; c5 m% a1 J cache\_size=200,
    " n: P& {5 L, `3 X class\_weight=None,
    & c1 X7 F& x5 A: k verbose=False,
    ' n8 Y  S* I2 u5 N6 |" R8 T max\_iter=- 1,
    : K0 N; |( e6 y( S2 U/ B0 w) V decision\_function\_shape='ovr', & Y" h4 v. g0 Z( m& C+ D
    break\_ties=False,
    ; q, S! l( e8 C1 x) t; J random\_state=None); T/ D/ k8 ?7 I' A  m% [0 z! U

    ; @- z7 q  o" a: b; |1
    6 m8 E* {" L; v) h) @2
    4 v+ v, g. x' n- Q3% U; _, |4 b5 _' B) N1 B
    4
    ; r, @) U, K5 Z3 G5
    / N( n( ]9 R8 r, ^7 O  I$ L' A6& ]7 i) B& U$ k6 l
    7. A- V& _% X/ ^; O  }& a9 t- {& h
    8' R+ d' d7 }$ O' ~- ~: j( \3 I) b( d5 [& j
    9
    : V, E5 `" Y7 k3 M- q  s10
    $ O* }& d/ P4 Y' @11
    / C- K( o$ _, r6 C4 {' Q& M* D3 ]12
    & M  W- I2 O/ F1 a" G+ V13
      j7 h* `2 T2 a* X+ C# j+ H147 a2 L  r% @3 c5 t, D4 {- K
    157 l7 Q2 W( z+ H( l
    16
    7 z! T, R' y* j% Z基于鸢尾花数据的实现及解释9 x( e4 \3 ~( O. O1 v
    0 S' r7 p: e0 d2 R
    代码如下:
    " y# I# F- [$ C* g# v+ Y. W3 V5 h1 h, @& t) J$ S
    1 # 导入模块
    + D8 Y7 D" F0 I  T8 w 2 import numpy as np" E8 E0 V9 D* L8 I5 c- b
    3 import matplotlib.pyplot as plt# {+ q5 j$ ?& e+ q0 i' @$ Q* s
    4 from sklearn import svm, datasets( _  v, w, t4 h# y8 {, P1 [4 v
    5 from sklearn.model\_selection import train\_test\_split* h& S2 l- H( i+ K& V
    6
    : u' ]8 \4 a7 }4 m 7 # 鸢尾花数据
    , A4 l( `; M* s 8 iris = datasets.load\_iris()         #原始数据
    1 [7 N5 h8 @3 ? 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    2 Z% Z$ p7 q: O9 h5 _) M10 target = iris.target0 b6 [4 n8 p& Z$ {6 o$ }
    11
    - W+ p5 N5 f' H. s% o) X2 l12 #数组分组训练数据和测试数据+ C6 i% D; |7 m8 g" [
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    # r& g7 Q' @; v8 Z* Z; l14 ( l- q- F( t( e2 x
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2! k" Y# c# O" Q/ m
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t( X6 N. X; v) t. f, I/ {2 x
    ————————————————& n, `8 V$ B# e0 S# b" u/ r
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    & e% Q1 p, b, M  y( g) h" P原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791( }4 V6 y' p7 Y' ]' d/ t
    , b/ n1 w+ z7 z- c0 J3 ]

    ! E) ?9 ~' n/ \6 e# _
    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-16 07:32 , Processed in 0.315902 second(s), 51 queries .

    回顶部