QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3212|回复: 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
    支持向量机分类算法* t: m5 J& o, V7 Q$ V; X+ L8 _

    8 ?$ k% \$ e& Y. z6 r1 d🚀 优质资源分享 🚀
    8 T+ e7 s7 P7 O9 _6 Q学习路线指引(点击解锁)        知识定位        人群定位
    6 {' O+ B7 \" V4 x🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。9 d1 b! |( ]/ _0 l* |3 P
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统$ ?* i, {+ E4 ~' R, J$ J
    支持向量机SVM6 R  E$ f3 U& p. r7 _
    3 `$ X) Q6 N  A0 e
    支持向量机原理
    $ v, J2 U- s2 U/ P3 K
    0 g) ?2 {. F, A2 R1.寻求最有分类边界
    5 J; h& m! z1 P: X3 v
    2 @$ f( ^& P: O1 t* g9 R! u正确:对大部分样本可以正确的划分类别2 w4 d" k; P# y0 S# }
    ! }- R3 Q5 U8 A  g1 k
    泛化:最大化支持向量间距# ?% w% m% h" s- J9 g
    # A8 K8 I2 U2 y1 O" @: T, O/ Z
    公平:与支持向量等距8 G4 j! v- z0 T- E/ s8 y
    8 n2 @1 {! I$ a! ?- ]* |- A) Q) L
    简单:线性、直线或平面,分割超平面
    $ a( C! ^- Q' O' [4 ^: T! \& U$ ]( w$ ?0 {( ^& v( w
    2.基于核函数的生维变换2 J9 T* p4 J$ T8 D% _2 X2 E0 v, g8 ?" F
    - c; y' B% W* y; C& V* l
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。) v0 ]8 N3 O: ~
    2 Y1 W: a: l1 Q
    一、引论5 i! X  N% U0 i7 P1 B  |  B0 S

    * C+ I% i. P4 O# T& I; O' [+ Z使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:3 y# Z8 M: b2 S6 O' _( {
    ; _* R; {. z# w* I9 T% d+ t
    & q$ l6 q0 T' b: O' G  T

    1 s8 e0 L$ A; `/ q' F: ], x" q9 k现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。9 Q$ O3 Z8 L4 w7 b+ u/ h1 `/ X

    " x  y# N' D3 f+ X% h6 f+ z! n, K我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    ; l, b, @" v1 D- z/ m
    7 A/ @/ q  k0 |! }0 x二、理论铺垫
    9 w5 }8 V& U( v3 {; ]4 B" Y5 ]* V9 ^+ m
    线性可分性(linear separability)
    - W  W" {/ Q' C7 S. E, n
    % I1 B- X% X$ f% b* o6 j. U5 e! x+ J: ]! g

    : K# i4 Q/ Y# F" Z2 V1 [& Z- l而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
      T4 l% A! ~/ X. e4 n$ D0 a5 `) f0 j* H$ C7 V% c

    4 I+ u- J5 I0 N0 w, M2 [
    4 C# }( {' [' R/ q决策边界
    1 W/ X2 A* ?6 F; L) \$ f
    ' I7 T9 B8 j/ p) S' JSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    & ]+ E9 v. y2 z, C, _
    ' n0 _/ M7 m# {  a4 Q
    6 ?2 Q7 v) e! N/ o2 U. O* ?6 C5 M  R( g+ p; |$ w/ B* A
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。( X, a& }0 C  q( B9 x
    9 x) D) ?, Y4 k% w
    支持向量(support vector)
    3 Q: l$ b7 g# H3 X, z6 d5 W* y  b) I$ U! W2 U" X2 H
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    1 J* p6 l4 F9 f/ W7 A/ M
    - q. A) n% O1 A3 C; ]
    $ L: t4 r- H2 }) Z# a4 B
    6 z7 K, O7 n7 S2 b
    " }. C( J! F8 }/ [7 u0 m4 D
    . F4 V# r7 {' `# L2 x# ?2 V: Y! W( i. G核方法
    ; t  a! F1 f7 X' z
    " D3 F6 T+ x% q# B# S0 f% D9 J6 n- w( U6 ?7 ^

    - D5 p5 p9 V+ }" u- s) w6 W7 B) D" Z  c' M. |

    - ^" q& E4 ~. @% o3 n以回避内积的显式计算。7 q6 {, g; I+ e2 r1 q
    * U' o# w$ p/ X! x" ^; G$ M! ^
    常见的核函数:9 M  q. {/ S: k  G8 [- W! v
    # ~6 N# p8 M& B

    4 U4 d$ }) F) l6 ~3 \7 @
    5 b  |# t6 Q$ C0 N3 W8 k7 I. @kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
    7 Q+ _1 s9 F2 ^3 m" `; X, }& N1
    % d8 h0 ^8 V6 l* \, p当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。( t9 H- Q! Z/ O- t2 p

    " f/ s. p" S) O0 e1 SSMO序列最小优化算法
    ) O2 Y; U" G8 n8 H1 E7 }  K2 a9 y. `  C& u6 b* `& r7 z# }# h
    9 T4 D$ G" _# q/ c& q6 q. a+ h+ P
    - ^8 P% W( ^* g& \& g! f
    0 L4 k- j# u5 m
    # ]. L# z3 a# n2 {) w. z5 O* `

    ) R( G" X/ D& u  V, v+ \! f1 S) C5 A; c* _
    三、Python sklearn代码实现:
    5 V' f* g( F0 s
    / {4 G$ X# S" J9 j$ I5 F; dsklearn.svm.SVC****语法格式为:  ^9 z0 A% a& T2 [6 E, I

    . H9 R: d3 B/ W+ v  h2 P' xclass sklearn.svm.SVC(  *,
    ; R; W' {' u# u/ @  [ C=1.0, * m7 ]2 C# Z  N  W
    kernel='rbf',
    6 F5 l6 X/ a0 Q' {' l: R1 R7 m" M. F degree=3,
    1 K0 C4 e+ {( Y) N) }3 g' P" R gamma='scale',
    1 ?7 b) m# R+ h* T6 R6 p coef0=0.0, - w# z9 Z# B! q% q3 B6 T" f
    shrinking=True,   @* q7 Q) y, O; g) L. X5 Q5 w4 n
    probability=False,
    & c( X( J$ \9 H( I' Z6 D tol=0.001, 0 q2 Q' F+ o. A8 U3 ^. r
    cache\_size=200, , S9 N6 I! g. E" A. h; p
    class\_weight=None, $ {+ P0 i7 x$ T% Z: m) o2 w
    verbose=False,
    % g/ Z( f: [4 Z! ]7 k( X max\_iter=- 1,
    3 w7 {7 F; Z0 H1 o; O& j5 {- r decision\_function\_shape='ovr', 9 d  I2 T  `" _# h5 A
    break\_ties=False,
    4 b& M+ n, j2 ~% j; M random\_state=None)
    ) D" B  G; ~% u* q9 B+ s/ T( ~* \; m/ G& m" \  N5 i
    1
    7 j% y, D! Z. k$ m" v( k2
    : \4 N" I2 E8 B; r) N3, g- v- U, \2 b" F7 _7 \- e
    49 U1 u) k% H. b& A
    5( i0 ^/ @4 N# J6 k" }  m/ l9 u+ V
    6* m' W1 D4 z; K2 ~& l8 e3 w2 c
    76 g, R; P1 d7 Q2 B
    8- o/ C$ ]/ H, U% _
    9
    0 R% N; K4 s6 x3 V# {: g( Y10
    6 z& n; M1 K8 \11/ S( c6 s$ G, M6 c; |
    12
    ! T* r+ U$ t# p, d. x13
    - z( z5 H2 _3 h+ r9 G14; K3 k6 e0 y% f2 f# o9 Z8 z
    15
    % j1 `* W- e; t9 H4 E4 J16' i' [* X" Z, S- R2 o
    基于鸢尾花数据的实现及解释! V$ f- i. @$ M  A" l

    ) d$ \( k/ U2 R) }# O8 f: J3 `代码如下:
    # K) V7 g8 \4 A# n2 p* H8 @# J* x5 Y3 p7 P1 l- l# [& B4 R( l
    1 # 导入模块
    " B/ W2 K  U; ^& i$ g' @% y 2 import numpy as np/ j2 L" N7 Z6 Z' M$ V9 s
    3 import matplotlib.pyplot as plt6 [1 h# V. _2 s6 E5 \! k7 D1 T- d; @
    4 from sklearn import svm, datasets' A, g2 U( C2 ?6 _) Z
    5 from sklearn.model\_selection import train\_test\_split3 u/ k  q7 {' \- I5 m2 j
    6
    3 Z% \9 T& F2 Y- Z% V) u 7 # 鸢尾花数据, N2 z0 i/ v9 c$ ]9 e/ Q$ r
    8 iris = datasets.load\_iris()         #原始数据2 j! j! G' h2 I
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    . B$ o1 R  ]' o- j- @( @10 target = iris.target( [/ W7 }' X# K
    11 5 f$ @% w. w$ H
    12 #数组分组训练数据和测试数据
    / e( I5 o# Q3 h/ Z% G13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)4 H! T6 l- g. n3 U5 ?" i
    14 . X& }  F+ x: \* ]
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2) v/ {) @9 P5 q$ `
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t5 r9 h7 q6 d% s+ c3 [/ e, K9 }
    ————————————————. |. X+ G) O$ B" C' I
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。( d0 N* [3 S, ^7 g# ^$ M: o
    原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791( E8 S. I3 }( B( p  P4 O4 Q% p

    % K8 z2 p$ K# J- ~8 \0 v' Y7 o$ g$ J% |% D
    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-9-13 11:51 , Processed in 0.312316 second(s), 50 queries .

    回顶部