QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3183|回复: 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
    支持向量机分类算法3 x% b2 D  U. t7 _: R% d  y

    . h& \/ {6 L+ F- b1 O' ^. S' V; m🚀 优质资源分享 🚀4 x( i" `; O2 |+ {. G7 z
    学习路线指引(点击解锁)        知识定位        人群定位; o6 z" s2 Q; q9 z- D4 Z0 ~, ]
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    ' E; ]+ M* h; `&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统# E! x4 ~5 A5 b9 O! V% U
    支持向量机SVM
      H8 ?* X, S, F+ h. C- F8 M; [6 p+ q" p. S( F. L
    支持向量机原理
    ) O3 B( h3 P  I5 X" }  {3 y; a* E; b( Y9 {
    1.寻求最有分类边界- m0 E( G3 s# ^, J( I
    5 e  Z7 L9 ~% X0 q4 E
    正确:对大部分样本可以正确的划分类别
    , R  G: n6 e' H9 v& _6 @' ]' N" z4 }9 r6 {" z1 X
    泛化:最大化支持向量间距8 {# m; v8 w4 k
    * [1 s; C- J# v; k
    公平:与支持向量等距
    ) w+ S5 k+ o5 z' y5 a5 T2 r- g% F3 C* C8 g- e+ J2 _; F
    简单:线性、直线或平面,分割超平面
    % e& M* @6 i3 s# G2 {+ B7 b
    & x/ O7 _% M, c) m1 x' P- Y" `/ ^2.基于核函数的生维变换
    7 h5 e( ^  z, p; W! o: Z3 Y0 u8 D* [7 `" H+ Q2 V& S
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。3 u3 X: B) }+ @* B4 H
    ) m/ a, x. s  V9 y% b) A
    一、引论
    - f' ^. o9 Q5 O$ d9 n% h
    ! [# M+ V0 b+ D+ `* b" _  K使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
    ( ~$ U( }- I9 d8 e& [) Z  C$ J* J7 U+ g& N# [: X
    % ?& }9 h, E& L( Z4 v  d& n2 `

    " \7 Q- E, l  U8 P+ I" o现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。  a* h  b, k& R/ W
    6 t: D1 ?& T" H: J6 \' \( |
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
    2 A  I& o( y5 o5 G6 Z
    4 `# X- }4 o+ _二、理论铺垫
    & a) x9 }& Y7 n. T% U( F2 c9 G* x
    9 o4 E5 E: a  K线性可分性(linear separability)9 e0 r( a/ M% u, n2 F
    # i! O8 J2 a7 ^: O0 [5 `( u/ {
    1 l! T, g6 B* R
    5 R; N$ I& X8 ]* w5 U# W, T* \$ L
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。+ B3 v0 V7 \7 |* f# `9 j6 `: u, F9 Z
    5 V* c" g4 c+ ?- y5 T- m9 n
    5 s( h% a4 Q  t0 G7 C/ C7 D* `7 D

    5 s$ p; |3 ?, m1 U决策边界8 |" c- b: C( t& x+ \2 t; k( c
    " ]$ c4 q5 L" {  t, b
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。3 v* ^# [, `4 R& Q5 c0 f5 N

    1 X1 U+ H. P1 r7 }+ g+ Z6 \) f& z; }9 b. U& w9 i) H

    0 c% K! Z7 _& e: L# P$ ^- O8 f: Z1 I4 x总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。- w  h4 c3 j' ~

    0 U$ n, R; k+ e. p支持向量(support vector)
    . f$ j4 @3 B+ f3 U
    ' \, J+ k" c$ m7 T! B* [: k, C$ {  ]在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
    % x" E1 j! F; o: a+ D$ C
    & c  [  z6 N  p/ l( b+ O/ [$ a2 r4 o# t' r5 i6 c
    6 P" p/ z  `. M4 H$ g; V/ e" \
    & k; I/ J: U8 \! v+ l- @
    . E3 p! b  T$ v/ {* x) p* v
    核方法$ L1 U# [# I; [) Q+ Z
    * g' o4 N6 h3 R9 x$ d

    ! ]1 y  V9 V7 a" q
    " z6 m4 a  I1 L# w* R- t2 N' z" M  N9 O( f3 F2 z1 t) ^: v
    + g6 @! W0 u3 P1 I+ J2 Y
    以回避内积的显式计算。
    ( e; U$ G( d/ o
    7 L- d  u3 L8 p, Y1 `2 K$ ]# A9 ~常见的核函数:. d0 x+ x$ ?: N$ [# I; p( U

    3 p8 Z$ d$ l$ v: P: N0 q
    9 ~6 z1 W3 x% P2 B4 h& z$ p2 D7 x5 V1 x- X( Q
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'% S/ {# Y. D& Q+ |' u3 C1 T# R& p
    1
    8 B( v4 M* r: D当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
    % s( ?- A8 G, Y: t4 \' i6 k- _) n  I
    SMO序列最小优化算法" y0 g& a1 P: u' m& U2 `# w
    , `" c& R  H) A7 O" V7 O- \

    : ~% n/ O+ E7 h( J+ Z* u5 f: I6 l$ d5 s) @- r" ?

    # w8 J9 o4 ^* z8 X9 O9 b+ B" x: F+ m/ E, X, x

      j7 q  S: m( G" m& t* y, d3 v- B$ i4 h3 h+ b/ o9 w
    三、Python sklearn代码实现:
    2 i" v, j: D) u4 L! b2 R
    # e  V! `( P; Jsklearn.svm.SVC****语法格式为:1 |8 T3 P' Q2 i6 O* ^
    * q3 o: @  l, n0 D: G. a# c. o
    class sklearn.svm.SVC(  *, 8 M2 ?# v( \- D4 t+ {$ ]' ~3 I  {0 v
    C=1.0, 8 P% i2 k; a9 h) X2 g" T
    kernel='rbf',
    " Y  F# Z$ k0 o) U- m degree=3, 8 \5 @$ z0 x# B
    gamma='scale', 8 V1 h0 M; C9 Q' I4 Z
    coef0=0.0, 0 ]2 n1 ]- W0 X1 E9 Y- m
    shrinking=True, * _' R8 L) D; ^. I6 w
    probability=False, , F" }' h9 y5 A) D% J" X
    tol=0.001,
    1 `0 ]; p" f% [6 h3 l: r9 X cache\_size=200,
    1 G$ x5 J! [$ u$ D9 f4 v$ C$ K class\_weight=None,
    ) |7 Z7 N2 j+ \2 W0 ^ verbose=False,
    : K' f2 A* b: _& d, ^ max\_iter=- 1,
    8 i4 U/ ~! E  X1 \, n* y4 [- Y decision\_function\_shape='ovr', ' q$ W: ]' w" k: u. N6 `6 l
    break\_ties=False,
      n. ~- v! ~. Y0 o random\_state=None)& `  m& p) c4 e6 x7 I* c3 r
    2 O9 d- N& Y) \, |
    1" Y1 ^2 t7 W9 R+ A0 m+ ~
    2
    " Q; e6 R4 _( A5 V; {, Q33 x. U" T3 _& l  G
    4
    # }5 Z3 N7 e; d6 D56 l! a! i. C: H- B3 A
    6
    8 r& w& ~) c* n4 d1 J  I* v77 x$ V" ~7 b& z5 y0 v1 R  O
    8  ~9 [3 ~( U, O+ v* A; U5 S
    9
    + H  C) |- R/ m1 I+ j- X+ Y6 K- s; d( e10+ Z  a$ c* Y, R2 N9 n
    11
      k8 a6 p3 s% W* z8 l12
    9 z$ }+ d3 K9 j( `- d$ a' R. T) }13) a( y' x/ E! R) N; l- S8 q" H6 l4 m
    14. b) _' I3 n( Q: e9 f8 B: `: j
    15
    # t! ]1 q: t' Z$ L16
    ' q5 q! V: o0 t% F$ R- L6 V基于鸢尾花数据的实现及解释& \3 G# K* C$ w$ X; j  |
    % i4 t) \, b+ Q0 G# s9 i4 Y
    代码如下:
    6 Z4 ?0 n+ ^  v  N, b  w9 Z
    . b7 K$ Z; F- _0 Q( a% s9 n 1 # 导入模块
    . u8 I. E5 G- _: o. m$ G# V 2 import numpy as np
    " Y+ m, }3 V+ ]% w# h* [' q 3 import matplotlib.pyplot as plt
    ( y2 G8 }1 k5 {& ] 4 from sklearn import svm, datasets
    1 a1 t: ~0 Q& k9 b/ P4 L4 r! J 5 from sklearn.model\_selection import train\_test\_split
    6 D2 R6 ~2 @& Q9 ?3 S6 w  s 6 % j# ~6 B6 M5 G4 Y% Q; i. M
    7 # 鸢尾花数据
    3 f$ q. o: X) |! H3 {$ x6 n8 G" C: W 8 iris = datasets.load\_iris()         #原始数据  O4 F/ T2 g. d+ `" m
    9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)! i% P$ g5 P, V; J* H' h
    10 target = iris.target7 a8 u4 \! P/ h: F3 o
    11 " P3 d7 T4 }  `7 w& z( O1 d
    12 #数组分组训练数据和测试数据6 w0 D8 H9 _$ n' u6 r
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)# M# v  a% w0 w/ t6 d  r, w2 }
    14
    % I6 n7 t5 ^& g3 A15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    * l4 V# }- |, u' }7 Q; E5 i16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t$ X1 S; g6 r( q( |
    ————————————————, N+ {! U, M2 V. v; t' k$ @+ V9 |
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    : Q$ X1 f, y0 h2 X: p2 |原文链接:https://blog.csdn.net/qq_43479892/article/details/1268117916 }1 o% o. R( C3 Z
    5 Y0 Y, i8 L$ ~& S! E1 S3 x  D
    9 f' A3 m) x8 M! O+ g
    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-7-28 15:48 , Processed in 0.438548 second(s), 50 queries .

    回顶部