- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563345 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174226
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
支持向量机分类算法
! r! R3 u/ f9 E$ W/ z. O; q
( ]' J) @$ |. W: [5 Q$ I( |🚀 优质资源分享 🚀& I7 V( P: L- D
学习路线指引(点击解锁) 知识定位 人群定位
% [+ a h. e0 a2 `1 ?🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
( k. v- V4 Y7 L( t💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统; |; [, g( f' q# T. v" `3 \
支持向量机SVM
: g$ G9 S& \$ u; }
' Q1 s. s6 T0 l3 i) K支持向量机原理! a% { R1 \& L- M+ ?" v1 ]3 W
7 ?0 j( n: P" R1 T7 J+ j4 C- W! }1.寻求最有分类边界5 ^) O e6 ` D. \8 V8 E
m& V2 H( A0 ]( A! I
正确:对大部分样本可以正确的划分类别
' F6 M, k- r( v% o* x4 ?% Q$ Y1 _' f/ p2 |; B9 A6 W
泛化:最大化支持向量间距% [! ^' i8 H" F4 Q$ @
7 u& b0 Z1 |1 m; ^$ c
公平:与支持向量等距) s9 Q/ a3 d' }- f
2 b6 g' d. b* Z1 A" ~+ [$ u' Z简单:线性、直线或平面,分割超平面: O+ D8 C$ b9 s" u- F
6 W+ F. c6 c' e0 @ V5 j. h2 @2.基于核函数的生维变换
) l, [& V5 y% n" q% O0 H: B
4 O& O3 O& M8 y R; @- {+ @9 I通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。0 o0 M& I5 m4 e
3 `0 w" C* K7 g7 y一、引论' S( V; r8 T4 ~$ `7 N8 Y, f% s
; y/ k* A8 a, H
使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
- Y0 d# H2 j2 k4 W
t p' x) q2 O" d
1 y9 p& [3 M& Q" d1 }0 L- `- m
1 \8 M9 g5 M) ~1 u6 A1 L1 f9 [现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。5 `/ K2 ^) J. @6 A
7 v* @2 N; K% c1 e! F7 {- w. q" @+ F
我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:" i# Y5 l( _6 j7 {
/ O7 f6 j/ s4 e* K
二、理论铺垫
/ n+ {& T8 | d5 o( R8 B: O3 t6 M6 |, {* K; _" q; W& z2 R# @
线性可分性(linear separability)
( { k0 a" g4 O* F( P* X( N$ s7 ]+ y; K! F; ^3 Y' x" M
+ x6 X% J1 I. m6 U- ?, L ?8 X( {- ? I: r0 o0 u
而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。0 [: D" `: r/ N I" g
/ Z7 j9 L) e6 b% ~0 I/ P
3 V! [7 t. L3 P0 K- t- s- u8 e) P
5 W/ @# I) n+ U+ ^# n9 V决策边界
0 y& U3 \7 ~, F3 B, N: d$ h# i7 Z- ?3 P- u. o6 {
SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
- W* }) o8 T6 |5 g9 S* @+ _# h
3 h' n f. z8 o* f) P. e. T* X. R& \/ ~; g
; k9 K) h3 O' ~5 o0 W1 Y8 ]2 q9 W
总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。0 E+ |6 X9 ^, Z. _+ }3 a8 G, |
: Z3 o* A2 C) f1 p# q+ U% [% ~' a支持向量(support vector)5 D5 {' R4 w6 B5 z# T0 t4 @) I
8 q7 s# T% N. w& P- h
在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
0 s5 M* ~2 n4 c3 x. f& C5 P+ ^3 E A
% |5 l8 u3 j3 E
# w9 ]* c' j9 t1 C: c" J- y$ e) y( i. ^1 B& a
8 g, `+ y9 }% Y) b* b
核方法- X% o3 h0 U1 q
4 }- v% Q6 I! H' P
/ W ?6 }" b, k. ~# \% j! E) J( y5 j+ S o: Z
) K& ]; i: v& h5 H' o
1 p+ I- q3 s; ?# _8 ?* o% x以回避内积的显式计算。
' C, J, x' A8 Z! H) _+ O2 b
7 d( R& F1 d& h6 o常见的核函数:
- R5 ?- j' U) V! m% [
( x5 h% w" f& l3 R: C) f! p5 J/ _) q8 ?
2 j% Y( `. S8 o: z9 r1 N' t' L: x
kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
0 V0 C6 q" P2 a, u: I5 }$ s1
" f' ^. \. M. n( ]" }6 [) }2 j当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
: q5 Q0 x6 O4 _7 C7 k5 ^! [# ^* F5 M4 Z4 A
SMO序列最小优化算法
& g5 z9 X1 i y! X% r
! c' N% k0 C* ?" I' [( y0 e: G
- S7 r/ Y$ A1 g' q
# |8 d2 s8 J S# C; A- l
9 r% R& L' c' ], Q' O3 N, r" x! V7 n0 y* i* O# I8 o% m
* M& P6 O: d- i! ~+ _* W6 a, ~, _- Z r! a* W0 |9 V2 v, }1 z: F2 M
三、Python sklearn代码实现:
: m. A5 @- q/ x" V' y6 V, U0 C: X% k% o1 \9 g/ I6 h4 n6 I
sklearn.svm.SVC****语法格式为:7 C' m1 ?+ u1 Z) W3 p7 ~
5 M9 ]8 s4 r$ ?0 t2 v
class sklearn.svm.SVC( *,
) G ?! }* p6 e4 G& s# B9 C+ j5 y8 x C=1.0,
! {1 ?' q- L, ]3 @& y kernel='rbf',
3 K( B0 d; x7 H! ?. G degree=3,
# E" b1 {( J# ], b% d8 q! | gamma='scale', O$ J& F' ~2 i4 Y. A. m2 u
coef0=0.0,
; _6 T/ x, ^) x& t shrinking=True,
& g1 w2 `/ U) h' ?' a Y Y probability=False,
. r5 @( \1 S3 p1 t7 @/ e5 B5 @& j+ x tol=0.001,
$ P5 b3 D; c5 m% a1 J cache\_size=200,
" n: P& {5 L, `3 X class\_weight=None,
& c1 X7 F& x5 A: k verbose=False,
' n8 Y S* I2 u5 N6 |" R8 T max\_iter=- 1,
: K0 N; |( e6 y( S2 U/ B0 w) V decision\_function\_shape='ovr', & Y" h4 v. g0 Z( m& C+ D
break\_ties=False,
; q, S! l( e8 C1 x) t; J random\_state=None); T/ D/ k8 ?7 I' A m% [0 z! U
; @- z7 q o" a: b; |1
6 m8 E* {" L; v) h) @2
4 v+ v, g. x' n- Q3% U; _, |4 b5 _' B) N1 B
4
; r, @) U, K5 Z3 G5
/ N( n( ]9 R8 r, ^7 O I$ L' A6& ]7 i) B& U$ k6 l
7. A- V& _% X/ ^; O }& a9 t- {& h
8' R+ d' d7 }$ O' ~- ~: j( \3 I) b( d5 [& j
9
: V, E5 `" Y7 k3 M- q s10
$ O* }& d/ P4 Y' @11
/ C- K( o$ _, r6 C4 {' Q& M* D3 ]12
& M W- I2 O/ F1 a" G+ V13
j7 h* `2 T2 a* X+ C# j+ H147 a2 L r% @3 c5 t, D4 {- K
157 l7 Q2 W( z+ H( l
16
7 z! T, R' y* j% Z基于鸢尾花数据的实现及解释9 x( e4 \3 ~( O. O1 v
0 S' r7 p: e0 d2 R
代码如下:
" y# I# F- [$ C* g# v+ Y. W3 V5 h1 h, @& t) J$ S
1 # 导入模块
+ D8 Y7 D" F0 I T8 w 2 import numpy as np" E8 E0 V9 D* L8 I5 c- b
3 import matplotlib.pyplot as plt# {+ q5 j$ ?& e+ q0 i' @$ Q* s
4 from sklearn import svm, datasets( _ v, w, t4 h# y8 {, P1 [4 v
5 from sklearn.model\_selection import train\_test\_split* h& S2 l- H( i+ K& V
6
: u' ]8 \4 a7 }4 m 7 # 鸢尾花数据
, A4 l( `; M* s 8 iris = datasets.load\_iris() #原始数据
1 [7 N5 h8 @3 ? 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
2 Z% Z$ p7 q: O9 h5 _) M10 target = iris.target0 b6 [4 n8 p& Z$ {6 o$ }
11
- W+ p5 N5 f' H. s% o) X2 l12 #数组分组训练数据和测试数据+ C6 i% D; |7 m8 g" [
13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
# r& g7 Q' @; v8 Z* Z; l14 ( l- q- F( t( e2 x
15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2! k" Y# c# O" Q/ m
16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t( X6 N. X; v) t. f, I/ {2 x
————————————————& n, `8 V$ B# e0 S# b" u/ r
版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
& e% Q1 p, b, M y( g) h" P原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791( }4 V6 y' p7 Y' ]' d/ t
, b/ n1 w+ z7 z- c0 J3 ]
! E) ?9 ~' n/ \6 e# _ |
zan
|