- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 564444 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174556
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
支持向量机分类算法
/ J2 Q4 V+ E k a) x
1 e3 k; B3 r2 u+ { f🚀 优质资源分享 🚀 P9 T9 Y* d. j) x, W6 d1 R
学习路线指引(点击解锁) 知识定位 人群定位. }+ K8 `7 V3 n0 Q! ]( z9 x5 Y
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
/ b8 f/ Y" p2 s2 M( a0 I. g💛 ython量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统/ R+ p, C- n `) w9 G' [
支持向量机SVM
1 y5 Z* k6 \, x" L/ w: ~- r) r/ E& y
支持向量机原理
, l( m# b, S; l! X4 w4 m1 S4 Y
# i" ]/ c- s8 j( H1.寻求最有分类边界4 k7 W! \9 p6 V& `; ~
2 {5 |* ?: x6 V正确:对大部分样本可以正确的划分类别) C* T% ~0 s2 O# q7 |
( Y2 T; D- P+ ?/ q8 n3 E
泛化:最大化支持向量间距
- [. e9 x H7 P; `9 {; R, f R: d% E* R. ^7 L- f
公平:与支持向量等距
( n' u, @5 [1 u3 _$ [9 N" a2 Y% i+ ~$ r
简单:线性、直线或平面,分割超平面# v' h, p/ y/ B: z! t4 b, r) O5 o
4 n' ?7 u( N& I9 B2 A" ^) ]2.基于核函数的生维变换
% m6 v# V. ^$ r$ C2 N# n8 ~3 A$ ?* j. I5 E) I% \6 T
通过名为核函数的特征变换,增加新的特征,使得低维度的线性不可分问题变为高维度空间中线性可分问题。
2 u" f( L3 q% J) a4 k1 j' Q0 N s( B- w6 a, W) G
一、引论6 C8 C1 [- S* f
1 B/ ?2 J) c, w% r4 u& |. A6 n. x
使用SVM支持向量机一般用于分类,得到低错误率的结果。SVM能够对训练集意外的数据点做出很好的分类决策。那么首先我们应该从数据层面上去看SVM到底是如何做决策的,这里来看这样一串数据集集合在二维平面坐标系上描绘的图:
9 n" {: i4 t4 b* G. Z' I: F& t$ Z+ N2 N( f7 B1 T$ [3 a: k* B( `( l( N
- q- l- w6 k( }* r+ q$ `. B# @
# |$ _) u. |) v
现在我们需要考虑,是否能够画出一条直线将圆形点和星星点分开。像first第一张图片来看,圆点和星点就分的很开,很容易就可以在图中画出一条直线将两组数据分开。而看第二张图片,圆点和星点几乎都聚合在一起,要区分的话十分困难。; }) L% O* v4 U6 {/ \
* }3 ?0 {; p- k. G我们要划线将他们区分开来的话,有有无数条可以画,但是我们难以找到一条最好区分度最高的线条将它们几乎完全区分。那么在此我们需要了解两个关于数据集的基本概念:- K& X/ P+ B" g
+ @# e! i5 U! z* b% R0 g二、理论铺垫
5 E1 o5 T9 A5 V1 e
# m2 G% N+ i6 Q5 E- }# c; t线性可分性(linear separability)
: [4 b/ |- I' f$ J5 f: ^1 I0 \& B! M
* D. i9 C0 G8 x6 l4 y/ B5 o7 W$ c; k0 a' E# @+ T2 L7 ~/ V2 R% l6 q
- |+ E) t$ H* p9 e- k1 x) A, I
而对机器学习来说,涉及的多是高维空间(多维度)的数据分类,高维空间的SVM,即为超平面。机器学习的最终目的就是要找到最合适的(也即最优的)一个分类超平面(Hyper plane),从而应用这个最优分类超平面将特征数据很好地区分为两类。! Y1 ^& o4 s/ ^5 L+ s$ ~( E7 s
2 C& V' X P3 D" H" V! K/ k2 C6 a% c. ]$ w
8 r& F7 R% i- q* ~. j
决策边界+ [( B7 S; c$ j/ \7 V" j
. m8 ^2 F$ E1 ?+ T' m$ CSVM是一种优化的分类算法,其动机是寻找一个最佳的决策边界,使得从决策边界与各组数据之间存在margin,并且需要使各侧的margin最大化。那么这个决策边界就是不同类之间的界限。. K$ z9 a: x8 L3 a; y5 t) `) N
) e% h4 M% C1 l5 m* M
8 ?1 y. Z8 g8 M d, j `: d
5 |8 {# Z" X/ R, c% }, p总而言之:在具有两个类的统计分类问题中,决策边界或决策表面是超平面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。9 o7 c( ~! i s( y# m% v: j8 |
6 u% Q- J) j) l2 b支持向量(support vector)
8 V7 Y) z3 n" X% X- B" Y, M @2 l, z6 t! R3 ?8 a* r. K
在了解了超平面和决策边界我们发现SVM的核心任务是找到一个超平面作为决策边界。那么满足该条件的决策边界实际上构造了2个平行的超平面作为间隔边界以判别样本的分类:
' o* [. S( Z/ g) l2 F) S2 u2 y9 Y' X4 v) l: O
- l2 I+ W! |1 C; M
- _: ~9 F# l$ l1 j6 z% J
. M" E: P" `4 s: F4 h1 b
% ?$ U) E& V6 y L+ G: U核方法
+ F: B" N4 c3 S6 _" r8 O' O
: T: n/ t0 }; b' n5 M
% |7 Z! V2 w. a+ |
* M% h/ b+ p: e6 K" x4 }/ d% W1 _9 `& s
, }1 D6 R. R. ?- y以回避内积的显式计算。" U9 M# ?2 n# b# A: Q! \
! e# n$ N' N8 o/ k$ W5 q" h常见的核函数:
( F- l# K$ @" c" Q2 y. z% ?) L
! P& s! U8 q1 L% y* e' ^6 `' v) m! p' X) P& Y! Y! ~
; W4 {6 {$ |2 [ j3 o, s8 C3 rkernel : {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'}, default='rbf'
, `/ O9 o; ]! } T, @1# W/ U1 J/ ]9 E$ {7 C$ f
当多项式核的阶为1时,其被称为线性核,对应的非线性分类器退化为线性分类器。RBF核也被称为高斯核(Gaussian kernel),其对应的映射函数将样本空间映射至无限维空间。
+ }3 _4 \# x" u' ~6 W3 J( c- L# l. q
5 B, O1 ]( M n6 D; iSMO序列最小优化算法( o1 D1 B( [* ?; h! \8 l8 S
! i' Y8 {; O5 Y! g. t% N# }% |5 x$ k
8 _6 O4 ?# h$ @: o
: @) E, e8 |2 D
5 N' V' H/ S9 [
- Q4 k, n- v# e T- o' ^' W n: e3 s7 e
三、Python sklearn代码实现:2 Q, C5 ^% G& `
8 b0 ~* `2 [6 B4 j) T* Y$ asklearn.svm.SVC****语法格式为:
8 G( i4 Q2 v& q! E2 H+ G2 h1 l7 z% m5 ^! P! \6 I: P' b3 S& m/ Y
class sklearn.svm.SVC( *, 4 p" }6 U$ P) o+ w" [
C=1.0, & K- v) `2 u8 T- P6 B
kernel='rbf',1 ^+ g" P* V: Z
degree=3, 3 Q; S7 k: I t$ V5 o
gamma='scale',
6 O, `, c* J% _( v* h F coef0=0.0, ) H6 Y1 Y3 j& I; Z, j
shrinking=True, ' {% {; R. i# o2 Q- c" t
probability=False, * k+ j' M% d# {: s2 r3 K1 C' Y e
tol=0.001,
- G! f3 y0 @+ a1 I, v, Z8 F cache\_size=200,
3 d' A' F) ]) [ ~! T class\_weight=None, 7 t7 e# [! t' \; r- o
verbose=False, . E2 B5 A3 f& ?' q- _
max\_iter=- 1,
" p f5 h" r5 L i) X2 N decision\_function\_shape='ovr',
( N9 J; ?7 m" | Z break\_ties=False, 5 ] g, C& W6 @1 [' n1 M7 a
random\_state=None)
* }( E) H8 Q4 s) m- b$ T$ d$ }2 { ~7 G: R9 G8 _. \4 B
1
b3 {/ Q: c$ \2! U2 P0 \ e7 V1 L
30 V' Z; K5 Y( ]- x3 L, n" r
4
7 C, f/ A' t& B- e( ~5
8 {9 Q, I9 O' G62 z: G% s) k* z( l
7* T: L5 P7 @6 J V4 U! z
8: O. @. T r0 f7 f
90 U* N$ l4 j9 y5 N" |4 ^
10; w4 N, c0 s" Y3 a4 e0 t8 |' c
11
. [: r" O Q3 R8 ], f# E h12# ]) h J$ G; i/ G
13
/ `5 e' I; n/ W: h9 y Y* a5 u% W; o14
t/ ]) L. }; \. F4 \2 M6 B# A! x) L158 K+ F# w& D6 U ]: }- v7 L# P
163 I9 D8 A2 d+ X! o8 [
基于鸢尾花数据的实现及解释
# o J1 W) [. J1 B' }) [
" k# O. G( h$ L代码如下:
8 q \8 R/ d6 V% r
: Z& S4 C" i& _, @! Y 1 # 导入模块
$ @9 O1 D0 S2 _3 e( q3 F 2 import numpy as np
1 l4 F3 ?4 Y8 ~7 \. ~9 F2 \ 3 import matplotlib.pyplot as plt
; b- D- m4 l+ `/ X7 C 4 from sklearn import svm, datasets. T: ~4 p! I. H; d
5 from sklearn.model\_selection import train\_test\_split
2 J& t/ f% O/ t7 B 6 9 `7 u/ e W; Z+ n4 B! q' M
7 # 鸢尾花数据
2 ^0 w: g- U2 Y ^6 r' _+ O 8 iris = datasets.load\_iris() #原始数据& {) y0 Y. i5 G: t C7 }8 s( v0 e
9 feature = iris.data[:, :2] # 为便于绘图仅选择2个特征(根据前两列数据和结果进行分类)2 q# f1 c3 ?, ~: H) U9 s! ~( P
10 target = iris.target
& t8 \3 j3 Z5 c" N11
* B6 p1 C6 j3 C, C r12 #数组分组训练数据和测试数据
$ B( T/ \4 o- V* u6 U13 x\_train,x\_test,y\_train,y\_test=train\_test\_split(feature,target,test\_size=0.2,random\_state=2020)) i+ O9 Z9 A0 X4 U v1 ?: ?
14 P$ T) ]- Q- r
15 # 测试样本(绘制分类区域),我们数据选了两列即就是两个特征,所以这里有xlist1,xlist29 b/ g5 Z- ^" I' W! a, ~% @
16 xlist1 = np.linspace(x\_train[:, 0].min(), x\_t
; A, C& M* v8 q, u————————————————
, M- i* K( d/ k! \版权声明:本文为CSDN博主「qq_43479892」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
0 q Y+ Y1 U' o2 t& D$ ~: ?原文链接:https://blog.csdn.net/qq_43479892/article/details/126811791
( v6 l2 f5 R( r& [, l0 D5 J; x% W2 q/ R V6 t. w% l
+ c- `3 V' j) Z) C) [/ `
|
zan
|