QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3193|回复: 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
    支持向量机分类算法
    " y. T% O6 G, Q6 `% q' l3 c6 N' ]/ D8 Y" M( o
    🚀 优质资源分享 🚀
    0 l! X) Y) Q& Q) F( Q2 B; x学习路线指引(点击解锁)        知识定位        人群定位0 p. }" w9 U4 G: \" m' d  r$ e
    🧡 Python实战微信订餐小程序 🧡        进阶级        本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    . o0 k, `; h6 `3 S; K+ j+ x9 R  A&#128155ython量化交易实战💛        入门级        手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
    4 h* Z1 j5 ~; G) ~" x+ M7 q8 H支持向量机SVM1 T  y, e/ a4 C: i0 F" N
    4 \& B2 j& @' M7 v$ Q- a
    支持向量机原理
    8 f' r; Y# Y2 t. B+ C. {* P, M8 H6 T5 W" }
    1.寻求最有分类边界! F! W) X" R% @. F9 f
    8 s1 n; P( x% i
    正确:对大部分样本可以正确的划分类别
    + K( ?/ j: `4 u$ F8 f( Q% M2 W; ?( q4 g$ F: E1 |5 A
    泛化:最大化支持向量间距# O0 X" Q1 N) Y/ l

    ) }& z" G% Z' k2 _公平:与支持向量等距
    3 G) o& w4 T- Y9 c0 k& ^/ _3 H- u, [4 C' P: Q& v  ~; ?$ x3 E
    简单:线性、直线或平面,分割超平面8 \- F" Y  k7 a; I# @; e0 m. D5 D

    9 n: b7 z! `# ?" d8 S: `1 m0 `2.基于核函数的生维变换
    $ @( ^  s* C# X6 [- c4 B" Y4 ]) E* U* _2 W% I
    通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
    5 z( @* b: t) z$ C: n- }* |6 f7 Z1 F# a7 q
    一、引论/ c; @; K0 |7 d4 G, P6 R* }' P+ V" X
    $ U4 j; t/ y: f9 A4 _1 \
    使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
      _2 @& t0 o1 @* K* ^) r. q, U$ j# s8 J8 [- Y( l8 L! V  _" `

    . m& Y& _' |+ z
    2 ^9 \4 o' i1 `5 M* V$ I" K现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。
    % l4 v+ `; {/ b* N7 Z9 V" s: X% \4 I) K
    我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:# }+ M; E$ B# H/ d& {

    2 ?- @/ g( e6 J) Z/ Y+ i; y# Z二、理论铺垫  q' m6 e+ u; x! v  S

    + u5 ]  C+ A& r. `5 o6 p线性可分性(linear separability)
    % f, @' u6 Y# z8 S5 z# B% Y1 C. y; O) Y* f, L' A) I+ Y6 {

    2 t! ^% Q. q1 o$ A- I: L0 G" l
    而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。
    8 ]1 w; F8 {) d, K4 T" a% r2 f1 _; {* A  ]' s

    ! K7 `" g2 H3 S8 U( o% h) w  M
    & _% Z0 R3 z' ^6 w决策边界2 A- y7 K7 D: p, m% M) O- n
    9 i% u$ y$ R5 |$ L
    SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
    ; t$ ^! }. O, ^& a4 ^
    ( W5 g6 ~1 w& j3 k% J: x
    ) Q5 A" `, E1 F4 u- r7 M7 g: m. X2 o5 e! ~2 a/ t4 [
    总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
      j$ W- y: o+ T/ U  I7 H! y* x1 j/ i+ [1 Q( ?
    支持向量(support vector)
    ' _' d5 s" {/ K* a( U' o8 @0 [# l. j/ G" [
    在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:5 K6 ?6 ^7 g( P# ^/ G
    8 C, |7 L! K) h# K1 k" i& m

    # w: M+ j  P% l. P  R- A( x% _4 n
    " C/ }& P+ I6 i9 I$ @9 d5 b$ X: ^
    6 \+ ^1 b2 {# H! l6 M$ q
    核方法
    5 N2 s. E. |" P
    7 e, j' [$ d+ ?1 k# g! q* [9 l! I# v5 H7 V/ z
    . H/ E# k' I% T4 @$ m. }

    ' G' [  O: K& v9 U# J( u
    + A% K- L) h& H- o* b5 o  H( X以回避内积的显式计算。5 v- l# y8 k, z# j3 I
    ) I6 l9 y& Y2 Z: \4 z1 B2 w7 @
    常见的核函数:6 W9 O3 o5 S, j, p
    ' i7 S. p7 J% d$ U

    3 s& N! T* T6 E, |( H" ~7 ~, K
    kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'9 e1 Y& b6 e% F$ a
    1% ?# n* i( L9 ^; H5 N/ w. ~' E
    当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。3 h) C4 y& k2 m, g0 C5 ]2 h. X

    ; z# o% |3 H' Q# Z2 [& w- J; B# JSMO序列最小优化算法+ ?7 W8 R( ^" P6 D  W2 [/ Z- l
    ) h% y' S9 @- Z# W# w

    2 I6 m& D9 n" A' c) K
    . s. m" m% P) m3 j. {) o
    1 p2 z7 w+ @4 T$ x$ A3 o( K" ~. g! U. R9 X% y

    - i- K) j) R6 ~
    8 ?6 u: m/ x, n. l- I: \1 ^1 o三、Python sklearn代码实现:
    1 v, j+ g' e( n9 J
    6 s- @! f( A& J, Z. P# w5 M1 j7 ysklearn.svm.SVC****语法格式为:1 Y7 ]3 H* ~" k5 f& x
    ' ?! A% c  e3 [6 `" u: }# I0 S* J0 N
    class sklearn.svm.SVC(  *,
    8 P( M( b) v. M. d! M C=1.0,
    1 s" S6 \1 s) q# x kernel='rbf',( d2 A# i- N; q! I- A4 d
    degree=3,   ?% i/ m( J1 y! t7 k% M. s
    gamma='scale', 8 k4 I& _. z2 ]0 ~: t5 w8 n
    coef0=0.0, 3 R4 n0 k" o5 F1 Z- E
    shrinking=True, 3 R. ~9 e$ l# a9 R
    probability=False,
    ' c- x) }- A/ l2 N) Z tol=0.001,
    6 ~5 R8 o7 O! e! z1 ]( }* L# C cache\_size=200, ! A8 t3 B  Z7 m2 u
    class\_weight=None, 5 k, s0 _4 \! S! `8 T# D
    verbose=False, / Y/ {4 |" f/ f3 V/ T
    max\_iter=- 1,
    9 G8 v8 D2 x4 c5 t: t4 D2 g decision\_function\_shape='ovr',
    - K( x1 q* p& o/ g break\_ties=False,
    + Q4 Y" ]/ X4 s4 h' ~ random\_state=None)- L) s3 H% O1 [- E2 `# G

    , R) j' B0 E& T% o* z- p+ I1
    ! a% D& J1 N# G# _+ D2
    5 v6 A' M5 K; @8 s( Y3+ f, g4 R0 t* d, ~9 i/ u/ B2 @
    4
    3 O, o/ y( A/ `/ o0 T59 Z) W( F0 W) g' E0 E% i6 f
    6' q' L" y* z4 R4 W# M! e
    7* P9 U* J% _! a) J
    8
    ' n9 z+ b' a/ Q& b9' P0 ^9 O* Z0 q% I! b
    108 r( r7 V5 [0 [
    11# a0 O$ f+ ]7 b! K3 [6 j
    12. D: x* H1 e, ~: o5 a3 F1 K
    13
    0 R, X5 z4 F2 v! D) ?4 p5 e14
    9 T. m* T- f5 n5 o15% t3 E; Y$ T( x: A' Q
    16
    $ S. h0 z( I0 c% S基于鸢尾花数据的实现及解释
    2 D8 s- e, o) s9 l" x# j: N0 @$ a  R0 s$ h# o$ h7 V
    代码如下:
    8 a+ _2 |) \  e2 o3 Q
    . J5 |( ~2 o: t2 w7 ^7 I 1 # 导入模块
    ! l2 }) f- C1 o! H! @- \" o 2 import numpy as np
      ^, L; r0 f& o 3 import matplotlib.pyplot as plt8 |1 c1 W& U/ T! v! X* b
    4 from sklearn import svm, datasets
    6 Q4 C! U6 K& f6 N1 @% L0 [ 5 from sklearn.model\_selection import train\_test\_split
    $ C' X0 B5 n7 y; Y/ G 6
    4 K. K2 g! t: F% @) k3 \$ L. `& T 7 # 鸢尾花数据/ D" h% P6 w4 O" ^* Y1 |& `8 h
    8 iris = datasets.load\_iris()         #原始数据
    * @( y1 m+ ~+ P, }; w9 n2 M. e4 c* d 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)# q; i% V, R& H' E6 q# m- A
    10 target = iris.target! q8 [) X/ V* z  n; e& _' J" |
    11 " c) ?0 C( j+ k, |+ o8 `$ E, e  J
    12 #数组分组训练数据和测试数据+ I& X8 _: }+ y4 V$ s4 Y
    13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
    ; }& V) O$ j+ L+ R' \% a14 . K" |; ]* R1 }& l" O
    15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
    1 Q6 f+ j7 T6 q( \" U8 y  j8 x16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
    8 ], O2 b# L, k) S( e————————————————( c/ X3 y5 t% _9 O" M/ w
    版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。; _+ V+ k( @2 h$ }
    原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
    ! D6 }* j* \# a+ G4 l, p" u7 w) i
    ! z/ w$ D. E9 j8 {: l4 X, P2 {
    * E4 I0 w4 G. m5 Q+ 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-8-24 04:27 , Processed in 0.312305 second(s), 51 queries .

    回顶部