- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564695 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174631
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
支持向量机分类算法: _& z4 s/ W% x+ L1 q3 d: T% V
! k2 v9 u8 n$ {, R5 O7 y) S2 C- y* X
🚀 优质资源分享 🚀
+ s; k" [% R) y' e. R7 N! r4 I学习路线指引(点击解锁) 知识定位 人群定位
- c( Z I2 W1 O( o🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。! K9 H9 z* m% s( \+ W3 z7 T
💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
$ s% ^/ S' S' U: I4 U支持向量机SVM
! x3 D; d) v* C$ W2 z% _$ p+ F ~5 q/ f- p
支持向量机原理5 B# \& L8 |( R" O$ v
8 U% r6 F0 x4 y9 @0 h, Z! D/ L
1.寻求最有分类边界
; \- ? s% l D& ?" l$ X# b* j7 W3 `0 F& B( A
正确:对大部分样本可以正确的划分类别- u& m x* J' [6 e5 [0 \) z
4 D& W6 t) k4 w4 O
泛化:最大化支持向量间距
) V" Z6 b) W: U" i: ?+ c% U4 n/ X% q9 [; M
公平:与支持向量等距
" g. g2 |' ?! O- ^1 e4 E
& ~- y$ k7 j' S G- a; H X简单:线性、直线或平面,分割超平面
f: R+ ?! c/ Y! P
3 Q$ l8 r( c, ]- M* O$ V$ F2.基于核函数的生维变换
& b( j8 N9 h9 C; t$ u
' |# L4 }- f7 h6 i通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。5 g9 {# r/ K1 S6 c5 L
3 I- k7 H0 d- z0 D6 V一、引论 U6 _! g7 P1 r) z0 P ]
* `; s3 O5 Y- p0 ^1 S使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
/ L, |4 |8 C( B$ ?; x4 P! S* u5 P2 `7 W: S9 g& ^+ ^7 J! n$ n
! ^ z! Z& F$ g: d% L9 S: d
3 X! o0 k0 `% z, I `" q2 P3 u
现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。" V: I. s6 V: I4 V2 m3 z) G1 M
( K% e( ?% F3 B7 C B
我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
7 s2 a/ x" L3 ^ s+ p& d/ a- n% }$ L: D6 X
二、理论铺垫. B4 {9 ^8 n4 C
$ ]- c6 v" \+ a9 i" U4 ]
线性可分性(linear separability)
' p! K5 r1 ^& O0 ^6 \ }: Y; Q
; c9 Q& [% B& e- l
) p. I; W" U' A4 w2 @) [- j9 K# h% K# T. R X4 ^6 A
而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。9 F8 ?1 y/ p3 s, U
% p- [4 U$ p- c2 m5 Q& s+ K3 P$ ^# O6 r4 x
& A" V8 l1 s5 |" n决策边界1 S& Y0 h5 F! k' M$ y
0 y/ F- W" p. J/ a1 k" VSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
9 ~3 r) r' u$ D, e! q% G
, w0 m! o0 N- X; A( l5 \3 }: y8 R8 k% o
# U" \* r$ T( d: l' v总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。
/ a. X( O H% S/ F1 b$ a6 R }# V) }8 M9 d2 g! P: m) i* _
支持向量(support vector)
9 i% Y2 e6 E X+ w$ {/ b a6 h1 \
3 N3 n& y' H* }8 Y+ L在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
% E* g6 x% f* q% y h7 K) t
6 f( f5 N4 }' L' A# w% z Z C- t' i3 ]3 P5 \# Z/ e
4 R4 a3 J- d& X
" \1 e; g' [( B& f
+ J+ e" K( m1 Z/ m核方法
3 c6 b9 v: u' f3 D" J8 ~* m
- Y6 Z) h) v) ^+ S
. L, V' F5 n+ N: S5 f# L+ ^% ^
1 o; c) H' l8 v, f8 D8 m6 J
! g. v. B7 R3 F, c
7 C. m0 @0 b0 t7 h( w6 |- f以回避内积的显式计算。
8 ^- S; E s6 d$ ?& g {7 H
7 {) J. B) n M- p6 |7 N常见的核函数:" U% x- B! ~/ l ?; R
/ @/ t, @' X, O% |6 V
6 J6 ^( j! n4 |$ W7 z2 C1 e' n, ~7 D5 W+ Z
kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
! _( G3 u/ w0 k# e" I# |* z6 h( t1
# U4 g. p$ B" n4 z当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。1 ~) l* S2 e) g7 N" k v% r, H
% X! o6 o" y* k/ t; _3 e
SMO序列最小优化算法
; q4 \$ p p/ o6 B7 o& } h8 ^$ b% X' |. n8 [/ i$ b6 g
4 E$ I' O2 C' ~+ Q* \. }* d# X- c! T
n- I' p- y% |3 @9 h% z. y3 x3 e+ b0 x5 P( Q6 T" D
$ H1 j# L) g. M. D
8 K/ O R$ W5 P; c. S9 ?3 g+ w+ P- b- a
三、Python sklearn代码实现:
9 s8 V2 J- G& B8 v0 B+ |0 f6 M# ~3 O4 l4 c- V' O% U
sklearn.svm.SVC****语法格式为:- I' H; |6 C% S* G. J+ B
1 a" C5 s$ _- y, ?5 v* p
class sklearn.svm.SVC( *, # i2 L( M' U5 n8 Q( M, w* z
C=1.0, 4 W* L+ Y; H" v M5 R8 m! a
kernel='rbf',
* W6 w% w5 [9 I2 b$ z# O4 V( W degree=3,
% `7 ^% G* Z1 m; ? ?. p1 l gamma='scale', : F' |5 M0 Q B) l. e& z6 U* J8 j
coef0=0.0, ) _% a0 y D1 {# z
shrinking=True, ' M4 |7 L" M2 W E% _6 R3 O
probability=False, 2 ]) n' z% ^" ^+ R4 A
tol=0.001,
* f8 u. \3 t& P) ~+ t cache\_size=200, " [: f$ K8 p" o( z4 s
class\_weight=None,
8 a& _$ C' L7 h; I* z+ d8 I verbose=False, # W# ~2 D7 P% J8 L
max\_iter=- 1, ( f5 R! G) F8 V% l. t
decision\_function\_shape='ovr', 7 i8 r& l5 U' H" n
break\_ties=False,
8 p4 G% |2 w* }6 m: \# e+ l3 R random\_state=None)5 v" N; l) `7 x. \
; a4 X" e$ [% S/ Z9 W1
2 i( L* s# i& m0 Q( w7 G- b2
) ^4 q4 S- F! p3+ N6 u& A8 g, T" W# s& Y
4! a/ @/ H. {$ i- F) j
5
+ o/ M8 @; L' L9 H6
' X% l$ ~0 i2 a) a) B$ Z% s0 F4 A7- E! i; } n- T0 a. Z
8
; H1 a- u, V( @4 _( m/ G9, Z% t2 ?% _. E$ }! B2 H
10
! q+ [- \' a2 N6 d7 L, w117 A* O& O9 V; F7 L" t {$ l
12: P8 |! P8 X$ y0 V7 x
13
d& P+ a& t5 @; i, T1 X14
7 {/ p' e& |' f' X15
8 U; N6 e! \. n' m$ A165 f; z% Z: q B7 N) F
基于鸢尾花数据的实现及解释
+ e3 C" u, t5 e3 e( q$ { g3 X0 J( C3 a; C- \& |
代码如下:
1 u/ T+ m) s p, w7 ?2 K2 z" @2 Q; ]
1 # 导入模块 T9 b3 z4 r9 b) p
2 import numpy as np
$ \4 E% W: H) g5 F/ z; V, D9 G k 3 import matplotlib.pyplot as plt, Z2 B) C6 \! v; @- k- g# F
4 from sklearn import svm, datasets, P: Y/ [4 @! z' q
5 from sklearn.model\_selection import train\_test\_split6 o( Z! D% H* X
6
$ W9 C1 M: h3 k3 T 7 # 鸢尾花数据
& C' `8 B, Q5 x 8 iris = datasets.load\_iris() #原始数据
9 ?7 s) N1 }- }4 f 9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
, W/ t% ]$ h8 I+ k10 target = iris.target
+ \0 ~0 @) ^' d4 E0 v11 . f% @% q# i0 D$ J- J" b2 w
12 #数组分组训练数据和测试数据/ a: w) ]% R* Z. i% h
13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
' J* H: ?+ u' ]7 d# G$ h14
R6 D1 v. Y, }; d8 t/ U15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2
# u. z- M; a. n, w8 Y; y4 n8 R16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
. J2 F1 a( ]0 d% q1 o4 n————————————————1 U/ C+ K, G9 n% ]- B8 N- w
版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。+ h) t5 ~" `3 ^6 r1 K- j
原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791% q. r- V% R% h, Y$ h
; L5 E: R+ r, d# e
, C n* c1 T; i1 ~; R
|
zan
|