QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3263|回复: 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
    支持向量机分类算法) c, ~# ?9 {' ]/ c
    * B5 f) B* J+ B, z$ C
    🚀 优质资源分享 🚀
    / ]: `) V. g' p4 m' i学习路线指引(点击解锁)        知识定位        人群定位
    8 ^: X# @9 d% L) _🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    $ b7 {; h2 s( N, a&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    " R/ T) X6 U; c, d. H支持向量机SVM( S) e& b+ l$ \$ I
    # F: w3 l- q# g$ \9 B
    支持向量机原理5 F7 ?' I! c2 W& [5 L, r
    4 L& l0 n0 A0 u
    1.寻求最有分类边界8 t$ u7 G/ _" G6 s. n1 D5 n
    3 y+ j0 V! l) U6 K( n
    正确:对大部分样本可以正确的划分类别7 P+ g' Q/ ?( f* J# R2 S
    6 D. @0 n* ]" D+ |8 H' Y
    泛化:最大化支持向量间距
    ) I' A+ r" f) \
    ( ~; H! i6 r4 j4 G; S( ~8 L公平:与支持向量等距7 F( z/ }0 g- L- V7 [, G

    0 z5 D0 S4 G. f1 h( R简单:线性、直线或平面,分割超平面/ s! o8 r- Y* m( l  z: r, S

    4 {. `5 f& E1 j, I2.基于核函数的生维变换$ s  ?7 ]1 u1 ~, h7 w
    # @$ M. x; D4 ?
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    2 r6 {5 a! K8 Z2 y  ^: M% \- N
    2 }: p# M5 q9 C- J1 S4 P一、引论
    1 A+ r* t. A0 ^9 x, u* x: k
    : l0 C# ]' b2 h( K! G+ a/ t9 ^使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:4 U% C) g1 m- K5 c; @' o( V' V

    4 ~, w- i/ f. k5 h# s# Y1 \2 ^! D
    2 \/ V7 ~* Z$ L' h( N7 i8 b5 }! j! m, Z' H
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。: F  j1 E! S+ r1 |( O

    2 T  L4 p/ L* T1 Y! L8 i' B2 H# m我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:% [$ o- C- U! J

    . _* s! F' ]% D! y* R9 X2 B* |- l# V二、理论铺垫. D6 d. r+ Y! K2 K+ z
    - ?/ w" l0 s# p6 v2 A
    线性可分性(linear separability)
    ( p! Y  ?* l) N& J# s: A1 s+ z# \; z. b: `2 _. r

    9 p/ {# a7 h! s' P* [# `
    2 a$ D$ y. t: f- K5 @" O9 ]而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。# t8 F- L+ M& S8 n
    9 |7 n) A+ W" d
    ! K# I& y+ Q1 z0 L* P' S
    & P8 J" x' O9 v, N1 _' S2 k% i
    决策边界. h% h& i  s& B7 A- |$ b$ C
    " }0 @1 \- k9 _3 u1 h
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    ( U. C; b3 p/ X2 y7 T" W6 ~6 o2 j  ?
    2 H6 V/ n8 K" o% `; C- ?6 F
    # W5 t( h  g2 N( f4 E( Y" Z$ a7 a5 [0 R# g
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。$ M( M, H3 {: F+ R; D; b# Q6 ]6 G( ~

    % I8 j; k0 t! V8 \* s支持向量(support vector)' b/ U3 y7 Q8 S' Z0 @

    4 u9 `8 p9 q1 g2 V; x在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    $ p6 k, M- L+ x9 I3 G2 N& c
    8 p# w0 T  m6 M, P$ r
    - r$ u$ M0 [% @* H7 |( M" C6 V/ I% Y/ T. A2 [; u

    . S) v" D* R* J1 c, ?! z  f* K1 P' y2 C7 \5 t/ s! k
    核方法# n; C( L3 e' s5 P2 e1 ~( b6 A
    7 R. _3 k. G% W" E- R
    - G! b& E: l2 J: \7 F
    6 n6 V  f0 z! D3 g+ N
    + ^- R4 }6 Y& W$ G6 \, H2 n( B
    % m! c7 h4 p( `* j( J
    以回避内积的显式计算。# n' V7 `. |; j! x; B: R1 u
    & O5 M( k; r  z. l
    常见的核函数:, K, @! ?7 u* G& V1 H+ P* v; J" X
    5 f* ], Y4 ~) H# Q
    5 X9 m$ G, Q" K- D' M

    6 \# j% o" E' J- Y: O4 Z2 y% pkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
    * m6 D" W3 u7 v1  C( ~, ?* G  o/ E
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。  e* f( u! h2 @1 S# p
    & j8 i3 a" V& s: }) ^3 r) M
    SMO序列最小优化算法, R  t9 m# r& j; _

    3 P6 ?) N( d3 p) l  t$ \3 V) p, q- v
    6 E8 k; j- |  q% X: u* j  _
    1 X0 y* `. N# @) N& G4 s8 _

    ) c/ C) x! f% j" ~/ J' S* D# T: T0 k4 v1 T9 |2 R

      \: a! @- Q) H: f" h/ E三、Python sklearn代码实现:5 ?; a4 M) h$ V4 o
    5 g$ e. R& r1 r/ {( L7 I  _- I
    sklearn.svm.SVC****语法格式为:
    * l2 }9 C$ z7 @' ^/ @. J- h  Z% D) S  P  W2 Z$ J* b7 O) f' R
    class sklearn.svm.SVC(  *, , G0 x( P/ ^) U  y9 _, R
    C=1.0,
    ! S% J5 S3 n( i8 k kernel='rbf',
    4 U" _1 X" k' r0 k- I degree=3, 7 }0 q# X( f4 j/ R+ T, x
    gamma='scale', 6 U9 w8 R) S1 v3 ?# }( J; P
    coef0=0.0,
    1 M3 d- z; C/ r$ @0 a- g8 Z, G: w shrinking=True,
    4 J; Y+ ?4 v9 h% _8 W1 W probability=False, & Q  S( Y3 D! {4 t- R2 ]  q: h4 O( T
    tol=0.001, 9 R, c' t! t" J' E! A
    cache\_size=200, ' D3 K( v' ?. T6 k' d9 O
    class\_weight=None, . H# L) f  \6 m7 D
    verbose=False,
    , B, Q) v3 W4 ]! W( H- W6 D max\_iter=- 1,
    % k( H$ H, x2 {5 m- Q decision\_function\_shape='ovr', ) t+ K! }) w) j% @3 O  I) [, z/ T
    break\_ties=False, * z! }' E7 f  u
    random\_state=None)
    ( V& r/ E( [( k% w8 v1 n$ b0 J. |
    1  l; R& v! q, C
    29 V. b; G, _; S/ R& I
    3; ^, t; e' r. `5 u, C; s  T
    46 O! i* ~. s3 p% i0 _0 X
    56 s' k0 a$ b7 x  Y  t
    63 `+ o1 [( ^; n
    79 U0 |  y- n  B/ {  N
    8/ R. t, `: C6 a, w, t! s
    9/ O8 ?5 ^) A( g# u" [
    102 r6 d% o! v& t3 A5 d3 a
    11
    5 K* L" N; l/ ^/ T; \7 Q) w( ~12( P3 X/ K6 r5 F3 ~- h) i7 s
    13
    7 T* E" n: V2 I- r$ o14
    & v3 L8 ^7 x7 s/ T" r. t- d157 H  z6 _7 I3 X6 R8 n7 z& x
    16
      A6 M. j5 V. Y, e" j" e基于鸢尾花数据的实现及解释
    ' s/ s; {- h- _' {& f* e. b; z" V
    2 Z! D+ T* O" _, ^代码如下:
    : W$ J1 {. \  |3 N" ]' c$ P
    % v7 [3 e2 j7 N- o0 c- V- } 1 # 导入模块
    # |2 P) d% H; d+ R: a4 u' t( B) d 2 import numpy as np# w8 k' b' p+ H# f# X
    3 import matplotlib.pyplot as plt
    % ^# \* a. k! l# |  c" i& P 4 from sklearn import svm, datasets
    " J. m- _5 b8 f* A# I 5 from sklearn.model\_selection import train\_test\_split
    " q' y6 g6 [8 ^# c( x) o' H# V7 M# D 6   {$ M/ J$ W3 N* x
    7 # 鸢尾花数据! G/ ?) ~  a! i
    8 iris = datasets.load\_iris()         #原始数据- W; L: W- Q. t9 S
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    ) _0 h9 }$ ?- n) [10 target = iris.target# T; z8 U; ~# A6 \/ s" n
    11 ' L) f' f' x0 c+ L. I; ?; b/ q; A
    12 #数组分组训练数据和测试数据, E9 I5 [# }+ p/ s+ [
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)7 F0 j, \! e* h- i! \
    14
    1 Z* R1 v! ?5 x15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    3 c8 z3 v) v8 w" r16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t! u; O& ?5 r: w1 _, X( R
    ————————————————* N  I' \# d$ l/ z
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    ) w  d  ]$ |; H$ S8 Y& Q原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    ) H6 w% m6 J/ j' J" \- ~& T8 F
      \2 S/ p$ o" Z! T( m) u; z3 U5 B7 I+ ^
    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-10-17 04:04 , Processed in 0.813337 second(s), 51 queries .

    回顶部