QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3131|回复: 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
    支持向量机分类算法
      l* C5 v5 |! V& _0 e$ G- s" A2 W% `: C2 `+ |! z  a
    🚀 优质资源分享 🚀" C/ j( X* P8 Y
    学习路线指引(点击解锁)        知识定位        人群定位
    + I- V+ ^3 _9 N$ q4 R; h% v% ?- ^🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。0 a7 n$ d; r- u0 X8 E+ [
    &#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统' q" _2 _  Q* n8 D( G) e
    支持向量机SVM
    : d5 [* G1 _4 D* y, b2 k
    . E* ]( u! h% ~* b2 Q; ]! A支持向量机原理
    . C5 w' M3 ~$ m9 R0 \( ]' d) d4 L0 H% R  F
    1.寻求最有分类边界( I3 ]! A. J+ `! N' D. [

    5 [" R. Z: x- R) r# T正确:对大部分样本可以正确的划分类别% |! q' G: ^9 M

    ' C1 }( @" L" @, {% d泛化:最大化支持向量间距
    0 c1 v: o4 n4 m  V& r3 r  G' `8 U1 F4 C% ~0 {0 ^9 e; V
    公平:与支持向量等距
    ( B& C) Z3 d/ l* P7 B# c. j
    : B! N# b2 b/ H2 O; P  W' L简单:线性、直线或平面,分割超平面
    " O1 t2 P, F5 z2 s$ Z+ _
    + h4 r+ ?% x" _2.基于核函数的生维变换4 u$ p" F: g. G) S" v7 M$ ?. W

    + c% h/ y3 V0 S6 X. B: J3 {. D通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。/ X) H# Z0 M, k; P. \
    , P/ g- V7 j- y
    一、引论8 b; e. j7 z( Q* G7 L( G& J. G
    % [2 g: E  \/ [% B8 u
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:7 H! ]0 H6 I, I$ e7 o

    , z6 N$ S$ \/ {" N, Q9 B3 x# [
    7 D3 P' |; g% |, x5 }- K4 L2 @& f. P5 D; R; l
    现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。: P8 v, s4 Y5 L$ t$ O

    + V0 i$ A/ b( M% d我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    $ W2 Z+ C. T+ ]* r4 y# N" Y# |
    4 Y0 p+ N1 C  t( h6 ?3 k二、理论铺垫0 |/ q3 b2 _5 x! |0 ~

    3 {' T" a9 w' i5 y5 M线性可分性(linear separability)) H( [2 x6 p3 c+ X
    , ?+ O2 b, {' G6 d! m  s% b9 N

    0 B, }+ H5 s6 j( @2 ^' J4 L
    ( ]* s( o3 P0 K: Z" ^% ]2 \! d; ^而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。2 D: z6 O9 e( W) n4 C1 i
    9 ~( x( }# x3 E5 _) W* q

    4 w2 K* K& U/ T
    " o' ~' p9 d9 t  X% Y( j7 K决策边界
    2 C1 n! v5 v- i( }$ j2 h" \4 g  F: o0 D- i0 H1 [
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。& n0 B! r% k! K7 S$ j3 _2 U7 T
    # B% j; u" |3 o" S( ^
      w6 c$ |6 F5 [+ q9 f  h  L

    * t7 U7 f2 @8 a" T1 J( P7 Y2 P总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。9 {, R( o( E7 r- V; m7 Z
    2 F- Y" K/ @8 U( {) @- v3 X
    支持向量(support vector)
    : a- C1 C% l" y5 ]- L, y# G2 N8 x: }$ X. w7 ^0 P
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:- J1 a6 w4 i  F2 P' S3 j
    7 ]; G+ c0 F$ S; s4 G
    3 Z* ^1 v  J) x2 G  J/ V

    2 J0 c+ K1 h9 q: [/ f* z2 M) k; `* t7 _* E! D  A/ X
    - t+ P5 I  Y2 ?4 N+ F
    核方法
    3 y+ U0 t" e* e: N( J5 E" C0 g4 g
    " o) a% c. S( s) q# k
    + K- k/ I  O8 {9 _9 I6 a' x3 m
      T; L8 Y8 i4 g8 b" c' t- s! b& b- l0 k3 C/ G; D% m1 }. f1 f
    3 l6 n3 r' w, x
    以回避内积的显式计算。% V& ?0 {8 F! ]6 w1 ]( H  F! F3 k
    - b0 S0 D6 ^, j. x
    常见的核函数:' N0 V5 d  A! s/ ?2 y4 O" F
    $ j/ O5 m4 l  k, d" O. v8 [* x

    ! ]: f* \- ^9 b! P$ `  |
    ; @3 X3 h1 p1 h2 Q" ~( tkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'3 q8 _  C7 a/ k" `+ o% s( g+ C& ]8 [  C
    1. m# F+ q6 ~! E0 G6 p
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。6 C0 Y6 t' m( e

    1 F# a" r- O  x1 l! p/ `SMO序列最小优化算法
    ' f) w  ~( x; F" s. [
    " |: d5 O: M! w, G. |- M
    # N- n6 {9 M  K% Z  N; _# g$ i$ C+ n, `1 ]
    4 L; o5 W2 R% x  d

    * p, a) v3 @0 s
    1 f/ |5 H4 W1 e# P' u. {" l) i# J4 Y9 f9 s# E$ J  A; Q
    三、Python sklearn代码实现:
    , z, G6 y" h( P" m; z3 X3 j4 T5 T4 I0 F+ ]( e* p( i
    sklearn.svm.SVC****语法格式为:7 b- O6 A2 c. E
    : ~6 d  ~/ e6 i6 B
    class sklearn.svm.SVC(  *,
      V6 Q  D- r4 S9 @. }+ [: ?7 Z C=1.0, " B  f; T+ p. m# z
    kernel='rbf',2 n3 S& u- V) Q( L3 K
    degree=3, % u5 m, g( U2 C/ v: ]; l, f0 i7 h
    gamma='scale',
    ; e( u1 `' e1 T coef0=0.0, / N) w5 P2 p( o8 |: k
    shrinking=True,
    8 a, @6 y. `! \/ e* x. v probability=False,
    " d3 F4 D* ?* K4 L tol=0.001,
    : ]+ f: ^5 t9 ]  Y7 C; X& {5 L3 n cache\_size=200,
    ) `5 l0 \( Q* Y! n0 y, l1 } class\_weight=None,
    # Q. y! D) `! |0 H# R3 h. d verbose=False,
    ' d7 b# m+ h! W% D: r max\_iter=- 1, ; q/ }# f6 K8 Z/ a/ `, D: Z
    decision\_function\_shape='ovr', 3 Q7 u# }+ V0 x4 ?
    break\_ties=False, " P$ t& U2 v: ?
    random\_state=None), f* X9 J  q. x. s* _' Z
    6 ^% K3 ]9 K/ M" h3 Q1 w5 {4 K
    1
    5 G  o2 b3 |7 Z( P4 U, s28 T  m, c1 h/ ?1 r* `* V
    39 N. d5 s9 Y2 k7 t% ]
    4% {6 q+ m* W% g" \9 q+ q8 t
    5
    $ Y4 _8 Z. h  n% w5 i: o6! v9 _' S8 g" q  O9 A
    7
      z0 b- l6 T- J1 L8
    ! k2 y; R& F. O+ J- p4 F# z- `5 b* N9
    , C% r. r" U5 S1 q10) H' K1 P! X7 s$ K  H1 Z( I
    11
    ; U* R; H+ L/ Y0 e& M126 d* J! \2 l+ i. F% [5 O
    13
    " P5 r( G1 Y% ~0 o+ R5 p14; D5 `5 R& G' t! ^' _% F; c3 r' l
    15+ k/ ], |( E* R
    16
    4 ]; l" @0 s! O( @1 U- V基于鸢尾花数据的实现及解释4 E1 @7 i; L0 `, H6 T2 @

    4 J- ]% T2 k$ T2 C* {代码如下:
    ) H2 T; R1 c1 b/ Q/ q8 r; v  j# N( ~5 V/ {  n: Z" m4 K
    1 # 导入模块
    2 C+ c8 a  \, J0 `4 C$ B% I8 Q) G 2 import numpy as np
    5 b$ v% f) c2 K8 J; C9 a 3 import matplotlib.pyplot as plt
    ) D7 ^2 F; N4 P% ` 4 from sklearn import svm, datasets
    1 M: v: A1 b/ O  i  c' k1 q; \ 5 from sklearn.model\_selection import train\_test\_split
    : g: d: Z; K; B, C) S1 C 6
    7 h1 C$ V, C" \  q% O 7 # 鸢尾花数据
    # q: ~9 x# A+ E" a8 g# ?5 q9 M3 V 8 iris = datasets.load\_iris()         #原始数据, l6 I, e- l/ D! n2 k
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
    ) L( m6 a: U% H9 @8 `: t7 h7 Q10 target = iris.target
    * t& D$ J* \; Y$ {  ]. v11
    $ h3 P2 s6 x" P) N. \8 A12 #数组分组训练数据和测试数据
    ( M5 V% O+ M( v% L5 u$ b13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020). n1 q# T4 U; T1 z
    14 4 r, ]' L9 @5 e# s! [  ]/ ~0 \; A
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    % Z  U. n. ]1 b+ h. V16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t# e: M$ `+ ]% v4 s9 W  p6 H& Q
    ————————————————
    ! _+ R, ^& L1 \4 I版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    $ R& ~# K  \6 H2 E% t原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    3 A: u# L& A. Q2 a1 J' |4 U  Q& U1 C) ^- T

    # H, k6 t2 ]8 [6 M, ?7 C$ B
    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-14 23:39 , Processed in 1.729084 second(s), 51 queries .

    回顶部