在线时间 1630 小时 最后登录 2024-1-29 注册时间 2017-5-16 听众数 82 收听数 1 能力 120 分 体力 565170 点 威望 12 点 阅读权限 255 积分 174774 相册 1 日志 0 记录 0 帖子 5313 主题 5273 精华 3 分享 0 好友 163
TA的每日心情 开心 2021-8-11 17:59
签到天数: 17 天
[LV.4]偶尔看看III
网络挑战赛参赛者
网络挑战赛参赛者
自我介绍 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
群组 : 2018美赛大象算法课程
群组 : 2018美赛护航培训课程
群组 : 2019年 数学中国站长建
群组 : 2019年数据分析师课程
群组 : 2018年大象老师国赛优
支持向量机分类算法
7 b9 n6 _% F3 a2 t( y6 n3 o! T
4 ^, n5 u( Y; \ 🚀 优质资源分享 🚀$ |! V2 [ V: L8 J
学习路线指引(点击解锁) 知识定位 人群定位6 ]( q" X' r5 h
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。. r: B4 v2 u0 x# N7 J# {* e' a
💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统
* n a4 B7 J6 d. w' k# Q7 b5 s 支持向量机SVM
" f1 e/ X* o E ; X5 }9 d3 [; |" c
支持向量机原理8 b" k, E) t. J- S4 E
$ T2 l* `' J ^% a. G5 \1 Y 1.寻求最有分类边界8 _+ L& _& R& T* M9 r- O- |' t
5 W, H: F# f" ~# u& \ 正确:对大部分样本可以正确的划分类别; W9 C/ q/ ^. N, C$ O1 {& r6 E6 }
8 M4 a( ^ R) l$ P! V 泛化:最大化支持向量间距
/ J7 e8 m) S! n7 Z. |* q- }
) u, u, r$ `) `- W 公平:与支持向量等距2 h S7 i* G4 u$ D. Y
" ^0 a" A" N" `$ Z
简单:线性、直线或平面,分割超平面
' }/ {; n" x4 V; L7 Q$ w! b2 m
* c3 I a1 j- _4 }9 c 2.基于核函数的生维变换; g3 E* z- @2 y7 X/ j
& U4 e+ l( ^4 }( g3 |
通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
$ I8 e% E( K1 v" u3 s0 ^- f : R" n' P/ x; Q L
一、引论
! |3 q) } q% d5 o* Q8 y# S/ d % l, d* V+ a p+ k
使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:$ Z1 n. K) q/ X; M' O; j" W& C
- d% q3 Z4 ~3 L. E# T
- L- n4 s1 o ^6 \6 R+ o
& r$ w: q: q" U3 k7 d# N+ g/ t 现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。! g. O; l% a i& e7 Z
! P7 v1 h0 a2 z) P) @5 }. } 我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:
7 p% m0 ?' M, F4 v
, q# h$ ~# [9 l% R0 n 二、理论铺垫
' ^5 [* Z0 D2 E/ T% ^
4 u. C* P$ V' w4 M# e 线性可分性(linear separability)
# b1 q& }: k5 W/ X/ g & c! E3 J; c) b! {, w3 ]# }
% K M7 d# R7 w1 N2 Z0 M) Q 1 S1 {+ n: o% w8 ~2 M# E0 {
而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。# y; a& o5 t! \0 W/ H& ^5 N( j
! n% L1 r$ S& s: M
& W$ h% {, B9 n. O8 `7 M5 I! y4 H 3 H# g6 j7 D3 F7 t
决策边界
( o9 |9 u1 P' M$ @( _7 x5 q ! E G% I% Z& n1 P/ ^- U2 x2 {; U
SVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。
4 p/ I9 s% b2 ]. n6 k' D # f1 v5 Q, y. }% W Y7 D
' n1 ~, c6 ?8 ?! U/ i
' U' r, k/ d, r, M9 F/ ^3 | 总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。$ S7 @9 i, b; q
2 v6 n( u! [& t6 A7 Z' ] 支持向量(support vector)/ p/ O) ~. V" |) U; l
# O7 n$ m! b- b. m* w5 e4 O 在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:; R+ K: C: z3 G4 @8 E3 O5 G/ c0 l
% ^, S F3 P r8 ]; M% F$ v
, h7 ?; ~$ u2 R9 I& g$ m / U9 C+ p/ V! z. `* h
( j( c+ F* ?+ b ' Q7 F# g, a0 N% ]6 r! p
核方法
0 a6 w% _+ N6 Y. {. V& i6 |) _: r
5 v, L W6 G, U$ ?( h/ x
5 I" }+ t" R, s+ v8 Q6 l : L" I" _1 F; P5 ~- x
2 G( @$ Q7 S8 D/ d, F H 5 X5 V$ r( E, g" ^, B3 d$ a' w1 n
以回避内积的显式计算。
- J- ]& o8 c! X; i* I
, N. ~# ~ i% P. j) h7 H# w- I; Z 常见的核函数:, T9 |! i) C) R6 d1 u
8 R$ \! I) M/ ?* R. S( U 6 {' V: F* Z$ N
6 Q+ [6 x. ]( ?
kernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf', Z: Q/ I- p3 p7 {9 Z
1
5 n4 u& U2 n+ [9 Y* U& x" U 当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
0 L. n! o1 m+ k1 g) A' \ # j+ m2 ?* J N H5 y+ a: F
SMO序列最小优化算法
$ p3 d( [. V! g! k
( E$ a3 P( ^; L1 Z! x, S
/ m- s: u" r+ D9 \6 N
$ q3 d* h8 W G/ u$ a" y; G! a2 Z
1 f* D0 F2 P; m: E
" y* K+ l: ^) Q5 e# K7 N
( l: N" p! w4 T4 a/ D/ h% ] h% E
8 Y8 C4 L& }% a! ]# \ 三、Python sklearn代码实现:/ L" ^+ f4 V4 Q) k$ F; f# s
/ N/ g5 H# r& z# x3 s& ^' f sklearn.svm.SVC****语法格式为:
" v7 p$ U9 a- I6 Q7 q- y5 [
5 o/ e9 W" T9 K& i7 o1 b/ Y ?! ] class sklearn.svm.SVC( *,
" ^0 J, t: s/ _ C=1.0, 1 }3 n/ @* G7 M% ^" H( D7 {, K1 \
kernel='rbf',7 z1 W- ?0 U& ~. Z# ^
degree=3, 8 C' |* h* G8 O) W, `
gamma='scale',
! N7 Z) O2 ?) g coef0=0.0,
" x& S# v* W8 N! b8 p shrinking=True,
$ ]5 e0 f; B- A" T0 ?; \ probability=False,
" i; N/ Q3 a' r. u9 S+ S tol=0.001,
% U# L3 s5 R3 Y: B% P6 b; I cache\_size=200,
7 ]/ m+ b: v6 @, V" G5 p% ^& P4 q2 b class\_weight=None,
" {9 ]- a( M6 \* V+ d. y verbose=False,
D% P# J5 e3 ~ max\_iter=- 1,
g" C; K5 K, p) p* I3 u U* q. ^+ A decision\_function\_shape='ovr', 8 @% d- Q& h8 J* a/ }6 K- h) g
break\_ties=False,
, y: E( u. L4 Z2 u5 k$ ?6 ^ random\_state=None)5 s0 s1 \; O. b) r* \2 r% N* O
1 p- A' \, v+ J+ r5 V 10 j2 q) I5 x+ R5 {$ o/ {+ ^
23 ?" y' f* M: o# W# R8 }+ W. A+ w
3$ r k; Y7 [0 Y& I6 s& `* D
4
- n S2 V( ?. f# N3 k4 s1 v 5 U/ ~5 O, g: a( F4 @! S! O1 {0 c
6
6 i$ _! I- ~ X+ i 7
! h1 J8 m: v. Y 8
$ {) c3 j$ D8 y" | 9
' r0 W& r8 ]6 _3 u$ q; x. `9 U 10, A/ `3 B0 ?1 ^, t, g8 e9 k; i5 Y
11, I$ C& K. X! ^3 ]
12
6 H0 b. n2 P" M( z# |4 j 13" R3 o1 i5 Q; L/ \ M
143 p8 ~+ Z+ K4 I. e8 |* B* e
15
9 G3 ?$ N) R! K; r" p3 D. [2 N 16
/ {1 U& e9 @; @, g8 c* W 基于鸢尾花数据的实现及解释; ^; d$ \. n# g' q
5 j/ K4 b/ N! u; G 代码如下:
- F4 n' q- X0 c M3 ]1 c* n
9 R2 j3 K X) j' F) R3 B 1 # 导入模块, s" A6 o+ N3 o, f& b6 \9 A, k
2 import numpy as np! o. Q: c' M' q0 i
3 import matplotlib.pyplot as plt# S/ z# c! [& b; b( U/ |, y
4 from sklearn import svm, datasets
! A$ k0 u* ?% d0 y& U4 d 5 from sklearn.model\_selection import train\_test\_split9 U0 o) F4 t9 `/ i/ `
6
3 z3 J2 G6 m9 [8 c$ i8 m, a 7 # 鸢尾花数据
5 c. i, e g, U- t9 `( h9 E* `3 c5 } 8 iris = datasets.load\_iris() #原始数据4 F# u# W) q0 x8 f% Y4 Q1 h
9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)
9 i) i' I& f8 y 10 target = iris.target
% F& } v& C1 y! M7 ] 11 " x- Z7 V* ?6 {2 [/ `) t9 n
12 #数组分组训练数据和测试数据
* o* n7 M7 s* @: H# n 13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)
& w/ Y9 R9 [7 C8 C8 W5 R8 Y$ ] 14
( w9 A% M& u7 U% Q 15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist2) `0 h( ]# ^5 w9 I0 B5 G% j
16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
+ C- w! c" {/ K( A8 ~+ S, U8 h# v ————————————————: g# X% J. O! C z# }
版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
) `0 c' E9 Z1 K8 _! ~6 Q3 I 原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
4 v( q9 w( @5 O # f' c. E! ^3 O) K8 q
1 P1 F4 l( Q* R3 }; N
zan