QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3189|回复: 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
    支持向量机分类算法
    8 |0 G3 M9 f1 J; U6 @* E2 O9 Y: l# P* W4 v& E. R5 t- i/ _6 D8 f: v- h
    🚀 优质资源分享 🚀/ q, L0 f' \8 ]9 H9 Y
    学习路线指引(点击解锁)        知识定位        人群定位
    7 \+ I* N6 K7 ]9 S/ R4 t. Y🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。' u% D8 [8 z+ ~: s
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    + I- V# X3 w& x! \+ ]* E% z支持向量机SVM
    ! L( R) I5 [: G6 J
    5 f! I/ `: t. k支持向量机原理. K9 a" j* ?' p$ t
    / p9 K" ]6 D3 B4 t2 Y% O4 m7 Z
    1.寻求最有分类边界
    : a% n7 V  e! S  y3 `" B& ~2 O* [1 ~$ R* q/ p- }! B. }) I
    正确:对大部分样本可以正确的划分类别
    . \' Z( ]& c. U9 m7 P
    + e; J4 s. L0 A! i7 f2 E2 H$ c, o泛化:最大化支持向量间距
    0 @, V; U( n2 {+ h! y( `
    0 p$ I! }( }- D/ }0 ]- G7 s公平:与支持向量等距) U6 f6 K  ^/ s) f. u
    ( I3 Z$ g: _. _6 K! M5 {. {  @6 J
    简单:线性、直线或平面,分割超平面
    / F1 U. ]3 c: c
    / ]/ D. p2 I8 C' u2.基于核函数的生维变换
    4 L; C" J* }5 G$ q- G9 ]& m7 s' A! A- ?
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    & Q! H2 Z# k: U; u5 {+ T& w
    - @4 p) i, w% e5 z* J8 f一、引论
    3 R& g2 i# z6 A2 _0 Y% D" ^1 N  @
    ( [$ Z  z4 ?. p+ l- S+ U2 Y0 p使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:+ O  \# _2 G/ N- _9 d8 X2 a

    * D- M: s% m8 ], @0 v, T- Y8 B
    * r$ K4 L& E: r* Z8 t  s  U
    " I1 C  \; k- \现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。) u" h+ J$ l2 N9 ~: g, [
    9 s! o8 Z# Z/ {8 t
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:! L# f: g: @% k. {2 j- ~
    0 {6 a" a& @( C3 |
    二、理论铺垫7 M$ e1 ]$ d0 F, P% i  D

    + v% z4 s* Q7 K/ k& L线性可分性(linear separability)% T. [$ b# k, j2 [1 j& m

    1 A6 ?6 m) q  {. O' w: _9 }: A# Y% B) ~8 O; X

    , k) r1 `/ C" `! B( b$ I而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。5 f1 c+ P+ V8 a" |. j

    8 n  }' `& R8 }' e; {6 ?6 a) T, o  o- R* i/ ?. V/ r
    " |- Z0 Q! H7 |: u! A  o; r* u
    决策边界7 u* |* ~2 E9 y' V; e! S; L
    ( A/ x* B* d- w, P
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。: ?$ t5 b4 r/ D0 q- k$ P

      y% w7 v# t- ?1 I/ ?% B$ A
    # H6 }1 [6 d0 ~: @9 {$ t) L
    , z0 \2 }4 g1 y7 L# M总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
    0 Q8 v" \) j- ?0 _% U; y
    8 h/ F' b8 f3 s* W- c- a支持向量(support vector)# u. h$ P7 c! G  y

    ( Q* s' V8 M* P3 L& e/ P$ ?) |在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:" C' u! @$ f6 y* _( _( U

    $ t" }# D9 ]* o# _0 O
    . F! ?" C: P+ W: ?) B7 ~  R* s( z( I) `3 u2 o  B
    6 s& z0 B" Q" b6 @" f
    1 `: Q0 G/ E5 y  P! m# ]  n
    核方法2 W5 Y% T3 o& ~) Z) W; ?

    # N( N# I. o7 |
    / t; a; n3 u) a  L- T
    $ x5 C: b2 R) g2 A: I( P6 }" ?# O3 R( ~& [2 t; S% {( `! ?
    7 U; {0 R6 _  P# {4 f
    以回避内积的显式计算。7 b/ p2 g$ ?! c( \6 B& V8 Q( L

    9 @! j: u; r5 v: X, x- b常见的核函数:
    ! o4 N* c& l) Z' U
    . `0 c+ V0 k# S, J6 i5 l% U( S" T! z( b8 G3 V
    : o0 ]* V: H# g. o% a
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'; e9 k* M6 P- u7 A/ R
    1
    0 y/ _. T4 [( }" s% O- m. z/ V* y当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    5 y3 p! E; I7 G5 P' Z+ m( B; ?9 F) O
    SMO序列最小优化算法
    3 B  L1 c7 y1 n2 ?, U+ [
    * [  M- A8 G- i1 P. R3 N* M
    ' E; S% D- y5 E. g7 u
    " [8 `' ]! W" C! ^
    , o# O+ a. A/ d  ?
    * m2 \: I2 k6 ^: m2 r0 B
    ' X8 O. g3 v  e3 e
    1 Q& U% f; v4 W  h" T; J9 `# R三、Python sklearn代码实现:
    7 j; y, `9 X7 {6 t  P# z3 L
    1 F0 x0 ?9 x2 ksklearn.svm.SVC****语法格式为:
    3 |+ P' i5 @3 T' p2 R4 ~
    & _* @! s! y( Yclass sklearn.svm.SVC(  *, 6 b5 j# J% m9 `/ ^. t
    C=1.0,
    9 d+ N' ?# N' a3 ~9 ^' ^, S5 z  _ kernel='rbf',
    " C8 w0 Q9 t$ T: c* Y) @! ~( Z degree=3,
    3 q1 B$ i5 y+ T' b gamma='scale', + v' l7 J  g; I/ U  B# z- J: }
    coef0=0.0,
    8 C% g( R* n/ @ shrinking=True,
    6 G5 A' ^( C4 M) ?* ~2 {* ~1 `& a probability=False,   ~2 V- L8 w. F0 M* {
    tol=0.001,
    # O' V7 [: }5 s0 y5 _0 u" g cache\_size=200, & y+ L& f: m. C
    class\_weight=None, 8 L8 ~5 z+ ?. w* q. Y
    verbose=False, 2 W$ \, U4 V5 E/ U- S3 z: J% G/ E
    max\_iter=- 1, # Q  ?$ @/ a! l1 S4 j6 v7 L
    decision\_function\_shape='ovr',
    2 o, B8 i# Q$ k7 ~1 {, b. R break\_ties=False,
    + Y3 Q2 H# K9 Q+ L+ W6 x6 P random\_state=None)# d6 i& F* X8 K! a, @5 a) u

    : J1 ^( e  u* \: P4 O1
    . [! z& w! o8 K$ w0 }/ ~" F8 a2 C2
    / \. }$ }; z% ~8 z3
    7 Z2 B9 C0 M8 p) @5 @1 `4
    ( T1 _" Q; e& Z6 N6 S! z) p% Z5* n6 C5 o& n! X  `2 h5 D0 `  H7 U1 B
    6
    : I+ E, x; q, ^7' `: M# V( \- H, G/ s7 E
    8
    9 X2 F9 s* R% @  @4 t6 Q91 Z8 [& `% I0 S2 p
    10
    5 I8 E; J9 M& C- Q& h116 t2 g; w- u* j0 ]" L
    12
    , l( P- Y7 K. p9 s# o3 @2 H13
    5 B5 A) o8 k- ^; w9 R& M14  t5 |# G5 j; s, F9 ~& `
    15
    5 @7 F% [5 F) r( V1 z7 q4 q* }- N( h16
    5 D2 ^. Q& ~" E: D; t基于鸢尾花数据的实现及解释; d2 t9 b9 j& y! {3 L
    9 B; Y7 v# V6 o) e9 Z2 y
    代码如下:7 w/ \$ [  q& d
    ; X- i& H+ Z% H( `4 G) v
    1 # 导入模块& Y- k. P9 X8 ~6 x6 t1 `/ r; z
    2 import numpy as np
    4 t4 J3 ?6 x% I& Z! C. k* B- r 3 import matplotlib.pyplot as plt# \5 D/ C, _9 b! j" `
    4 from sklearn import svm, datasets# `1 I% ~7 z3 |0 E# y- |
    5 from sklearn.model\_selection import train\_test\_split  A% {2 v) x% R
    6 9 U$ N0 ~- R2 e5 ^. N4 k5 M
    7 # 鸢尾花数据
    , C* k0 S& f& Q 8 iris = datasets.load\_iris()         #原始数据
    5 y; _% n- P, S1 q  }: Z 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类); ]. A+ b, K" P! N: X
    10 target = iris.target
    ! O9 h+ w, K$ R4 I/ o7 p) p  f6 q11
      L+ ]" ?, F) R, J1 q% V12 #数组分组训练数据和测试数据
    6 R2 ]( o  M  s' n3 O* t2 o13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    8 V- B6 N2 I' @1 @, e14 - v- ~3 s5 N0 m4 y3 V* V
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2# Q9 h" G4 ~+ ~8 i& w3 n& ]# }9 J
    16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t, g6 [; Z% \: F' r! r2 b
    ————————————————
    : p; R5 {: P1 _版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ; r5 e* B  ?& n1 [" q- _7 H原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    ; i! N6 t7 N' B7 a: ]& [5 i, @3 X! f' s: p  T+ V0 Z- p/ Y
    5 q) w  {+ g, @) I5 l
    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-8-4 02:52 , Processed in 0.433839 second(s), 51 queries .

    回顶部