- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 558785 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 173008
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 18
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
支持向量机分类算法
( c. |5 j* H5 R+ m9 M8 x8 `
* I7 ?3 Q7 b1 U1 |( M8 j🚀 优质资源分享 🚀
/ h1 f. k; O; Q& L4 T- \学习路线指引(点击解锁) 知识定位 人群定位
$ Q: r r/ J& M🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
' B. N1 w0 U% s/ Q6 a💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
9 }% @) Y3 G$ R% ?* n# ]支持向量机SVM5 k/ C% v K0 S! D$ [
j$ h* w0 a7 c- z支持向量机原理
* y. p. f; B5 P8 P, i$ w& F& `# [" Q
1.寻求最有分类边界
* J) W2 l% L/ b" u7 @
* a/ `8 V# X& i0 \& k正确:对大部分样本可以正确的划分类别
( c: t- w: g( S# l
, I4 P) H5 z1 k. Z泛化:最大化支持向量间距9 w7 c* m8 S. p
7 R1 b4 |$ _8 y9 X7 Q" {. y
公平:与支持向量等距7 o& ?8 m4 x* F1 h( S4 C
- H! g' W: c1 U9 {0 \% z简单:线性、直线或平面,分割超平面% o# J, p m; _
: w, l' E, }3 [2.基于核函数的生维变换
, g# x' S& x0 t+ @ k
; u5 ] |9 C' E2 H! l+ ?! j通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
2 K' G% o# v5 R0 S X1 `/ d/ B2 G9 w8 z
一、引论
$ R" ?- G+ G' |2 S1 o l
" V$ Q, y$ g' `! ?使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:8 p1 I/ B, A/ o y
) Y" y) K1 }# A) u5 C/ @9 O( R; q6 C$ L
8 C* x1 U. W. R, X& C# J
现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。8 ` V- r( A# |! ?
* B" O: e% G! U2 a- s我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:. I- y; R; @* \! l# L1 y) M X
" e+ x2 K4 a8 [& J; l" I2 t
二、理论铺垫
* T, a3 n, t( u- e$ v
9 r; ^7 m+ B+ b5 q线性可分性(linear separability)
8 ]& ~8 }3 L; B, p5 r; H; {: n1 c Z% }5 }0 j3 ^
# W, v1 q6 D( e& D6 @
( W1 p1 \% D4 ^, B ~4 q' k0 B
而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。' I) z: O* A5 `9 U
% q" v( c0 Z, C& s3 g/ |0 Z) n/ `
6 {" x h) c+ k& y( Z) f6 d& a# B决策边界
9 D5 N4 Z( J8 G1 b
6 \2 l4 [. `0 G! c5 aSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。0 a+ { L2 _# _9 j" D6 Y# Q1 _$ W
$ @& }3 K9 k. k; `
+ I, n+ Y# X: H' D6 e
+ q! t+ G, N8 S( E总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。& x* X# V- T! Q# p# i1 p" ~; Q
3 T5 a5 }- Y3 a. Y2 n& J
支持向量(support vector)% k. }5 C" F0 i r9 \% g6 Y0 c
; l, q1 n$ m8 e! i; k" Z
在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类: r( O" [: _0 K* @4 M1 G3 o. Q
% E. W( j! ~3 \$ F( B
+ f; v* U3 A1 W) \6 x( Z- N# ?
' z0 O# j" {4 I3 c! p, R0 N
! z1 ^. F" }) f) j; X5 b6 [( D7 r0 U( j4 S1 j" t( r
核方法& H3 }4 D8 h$ T) u v) P
) i. H; z" W4 P3 j$ ^. ?6 P1 M9 p- D; \2 S! K" d: `3 Z" z$ t; [, Y
2 D( s: O p. w, b8 W' x
+ {' o9 ~ C+ ]! L& c
2 |8 Q: Q. \: p( q' v& y0 h# W* t以回避内积的显式计算。
- Q7 m4 E' @ V2 j R3 P: K3 [7 k4 |' e8 r% `$ M, J. K
常见的核函数:
% G; I" ?$ I- ]5 B; L; y$ S3 ?
. D' J B6 G: o! l+ ]/ i. C0 E: g% q4 }* P7 E8 e& o- P
# X( ^* r/ L8 N6 q% R( g+ gkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'# S+ o" G& j6 r) u3 k2 @
19 c) E9 K5 L, E5 P9 ^& ?3 B
当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
I, H% \% D$ K6 h
/ c$ M0 ^: J( [SMO序列最小优化算法, F" o* G" w: t! e2 }
a7 a( e& L/ X8 c1 ~/ O+ z9 f
) T& ~+ u$ ~& K- X
, J0 r3 a0 m) N6 `! i" w" h
# c" e) l2 i6 E' d8 ?6 F$ X, ]# b% w2 K) ?7 R) a( c* A; q6 p
% l4 D8 L+ d- Y; i" i; w
( t" S _9 v/ `( D; I三、Python sklearn代码实现:+ c; {0 K0 f9 M' T+ H0 I
( [- p ^. z9 A; q( T% v. ]sklearn.svm.SVC****语法格式为:
! Z* A8 I- _4 \- ]+ H1 R! H s2 X! D0 d# }8 B; L$ V# B
class sklearn.svm.SVC( *,
0 ^) G" ]1 \; `$ A6 ]1 n: Y C=1.0, ) X K3 S$ ?! M& X A* Z0 ]# C( j
kernel='rbf',
( _$ e' i* z1 P+ {7 d6 Y: f$ C( Z degree=3,
% m, g" S. X: g: g& A: w: r gamma='scale', + V' R. f$ u. E8 h9 V% ?- u: T3 g. I
coef0=0.0, 8 Q6 N! a* Q2 H" j# k' T- C" e
shrinking=True, 1 T% D# z, [+ Q8 s( z
probability=False, 2 @5 V0 F' h1 q
tol=0.001, 5 k. D9 j8 {% @1 @' R
cache\_size=200,
7 {0 M# ]9 P+ L class\_weight=None,
2 S1 c0 K7 ~8 Y; F n! }6 \, E R verbose=False, / D$ D- u1 q+ L$ G7 N
max\_iter=- 1, 9 u7 B' }( a2 ?$ Z! J
decision\_function\_shape='ovr', , L/ m/ f/ A' z1 Y7 i- L9 o. Q
break\_ties=False,
" E* ~( D- W1 ^1 I4 L/ t random\_state=None)3 D; L# e4 V( P* n. {: G& P
5 I. M# s. h( k8 _4 d
1
7 b& l* v v& m" Z. r9 N2 T2
/ o0 w1 A' a8 b! J2 R3
' d. K8 Y& g1 @- \3 _& Z49 F* v( t) m& |0 Y7 U
5
# Y# x a+ ?+ `. ]) o62 G7 ~) {+ I( A, m2 t3 ^3 |
7
0 n' t2 a/ J9 ]2 e2 Z+ w# Y0 p88 P1 R# G" e9 f
9% |- ~$ Z4 b. t* G- z8 f0 @6 T# Y
10
' z* U9 B) W/ T& b, M11 j" h- X4 Z! N4 { H
12
$ b( l' H3 G: N2 h13
. E$ `6 I5 K' u! ~148 P! ~* M8 u* H- a
15
$ `; @( w( x' i. n9 I. T16
6 o) I0 ]7 b& W8 f) y基于鸢尾花数据的实现及解释
, l. O5 _9 F& M3 \9 j: {2 y, K. b+ m) t9 S. k2 t# z
代码如下:
. o! d+ M8 j( s0 W+ x6 y& b1 F1 {* |: w
1 # 导入模块0 y; r! L( P& L3 g5 x
2 import numpy as np
2 O! {1 G/ _: v4 x+ V) {- M 3 import matplotlib.pyplot as plt
; v2 U! e* W9 s2 A! U. N! G 4 from sklearn import svm, datasets4 g" m% @1 O6 I8 Q0 R
5 from sklearn.model\_selection import train\_test\_split
. w! v& t( m# { 6 B0 H7 T$ m% Y! d; D( A
7 # 鸢尾花数据
: h) f" W; L1 |& n; O 8 iris = datasets.load\_iris() #原始数据
: [1 q" ^" Y7 Y5 J; V2 o 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
' Z9 ]% F. `) y5 \6 `. R10 target = iris.target
/ L4 b( M1 n0 x) r# Y7 H' _+ p" V11 , Z, o9 a6 J+ z/ k- N; A/ K
12 #数组分组训练数据和测试数据6 ?6 E" @; q- k5 q4 L( Z
13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
+ r( G. Y' |" R0 E14 ' l& @9 }( m9 ?* E" G; r
15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2, u! {9 X6 ^1 `4 O* `
16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
. O3 f1 V$ T* s0 o————————————————) X8 _) o' z# {: {% O6 N9 L
版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。& T, c0 N; G! O$ s
原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791" M3 }- I/ P' Z* N( w
: u; E5 u- e( ~: j o3 W+ S4 }9 R8 h H7 C' l# m
|
zan
|