|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:* t# k+ X j$ J3 c g( H
, N3 M7 r& e) ?9 h# x例子:
) e& L* |% p1 }
1 {* x8 ]3 \/ }; \. n( f先导入数据:6 _, W3 W3 z: ]( h W# _
w6 G6 A3 }0 K( F1 d* |/ {
- load fisheriris
- X = meas;
- Y = species;, W! p( F6 _( y) y- @- u
/ a% V- m+ U8 V! ], |[color=rgb(51, 102, 153) !important]复制代码
' @1 U. V( z1 J+ U% d+ H创建一个SVM模版:8 r" q) ]- r0 B7 N
: `7 r$ L/ E' I' @' j+ F- t = templateSVM('Standardize',1)% b3 S. b! T0 i7 a
3 M8 O' Q9 K) P8 E; I" f
[color=rgb(51, 102, 153) !important]复制代码
2 |6 ?# |# t3 N) d4 K0 m/ ^: s7 m* |+ Y9 P; C
! C8 Z& i: l* h* [4 z6 e' {. O训练这个分类器,这是14b新推出的功能:
4 I, f1 A+ ?& G2 Z( M c. F* a/ z+ t) Q, q! u
- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});# P+ `' ~/ l: Y0 o
( r2 U0 e& F; e! [+ T: R3 @' v
[color=rgb(51, 102, 153) !important]复制代码, Z, \) g+ B3 |' R6 U6 f! B
6 D" c! d7 x+ ~9 c) {/ R+ [
Q# ?$ e* u8 o- K* o# _9 i! O& M
训练好以后,可以验证SVM模型:
! y6 V. w1 O3 a n8 X' O: [5 ^+ _6 i/ U% }
- CVMdl = crossval(Mdl);
/ p" K6 ]9 ?; M8 |9 {& c! X
& v* [4 m7 t6 k8 ]0 j+ g, O! `9 c# l[color=rgb(51, 102, 153) !important]复制代码
$ D, @# X6 y) f) r) Y5 z; O; A
% ?- J" X! E5 X1 O# a+ u显示验证的结果:
/ t0 v) _/ q3 L- oosLoss = kfoldLoss(CVMdl)$ n) h) Z5 K) {' d( L9 O( Q
( i7 g) y5 F- |) r- ~+ I[color=rgb(51, 102, 153) !important]复制代码4 _/ K5 C& t4 Z. I; \9 j
, k G# _4 ~/ O3 v0 P
1 @1 m' r* S5 u8 Y1 f
对于这个分类器,我们的验证结果是:4 Y$ l5 D/ J) ^ J( T9 \
8 `, ]' m9 G5 S, m$ v: EoosLoss = 0.0400
8 a4 S5 T; P# O: ^
) V' w4 h" [- r& Y5 t" b& \这表明分类的效果很好! |
|