|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:1 T ?+ M S7 c' N, c8 e9 ^
2 _/ P: n4 \; ~2 ?例子:7 e, h# ~% a% F7 V( b- R+ K
% O% |- E. _" t5 p e$ _
先导入数据:8 B0 {. \: V6 v2 A5 `( x+ @0 Z+ h
7 p) g% S. H, c- load fisheriris
- X = meas;
- Y = species;
# x3 z k/ E t
. A$ [+ y- h! O& x: y2 t0 B* }9 h[color=rgb(51, 102, 153) !important]复制代码
; U; h% `( J w% F5 W4 O; r1 u创建一个SVM模版:* t2 s5 d7 J% o; }8 H
5 \# [. v* V1 f% B- t = templateSVM('Standardize',1)
$ [5 _) R1 z: q
m" j- [7 O j8 {4 d& Q; \3 f+ J[color=rgb(51, 102, 153) !important]复制代码' s1 x+ n+ q2 z
/ J- @0 M8 W; }4 O
1 |3 }; ? G' \; {训练这个分类器,这是14b新推出的功能:
e& o, N/ q4 Y% r3 ?0 ^5 F7 ^, @# L1 S5 ^
- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});
6 T% v/ M+ [8 t- D9 i
8 W/ L" \3 j _) L[color=rgb(51, 102, 153) !important]复制代码- e. _7 c: L1 \9 Y8 J8 y/ k7 u* x9 R5 j
h( O5 \6 |4 |( D; ~" U( d$ _& ?
, g" l. D6 q1 q) g) Z+ J
训练好以后,可以验证SVM模型:
: g# h/ v3 Q# } o* i. o* G; w E1 e8 {/ \4 z& M
- CVMdl = crossval(Mdl);
9 w) s* D; [; S( |2 ^
: z3 Y- J% F0 d {4 q" u5 x. |4 q+ K2 A5 j5 p[color=rgb(51, 102, 153) !important]复制代码! ^" g+ a; v1 V, R: F7 F% f
7 W0 x; d$ _# P k, W; U& y
显示验证的结果:0 J/ Z1 f1 e+ [% j& @& T
- oosLoss = kfoldLoss(CVMdl)
. x8 `2 M7 f8 b- R
C/ b; @6 N% K% ] N; y- r8 {[color=rgb(51, 102, 153) !important]复制代码3 a* A4 y, `+ `/ o
* j7 s/ X1 ?' ]' e5 n! Z9 g9 L' X8 ?' l* l2 Q% i
对于这个分类器,我们的验证结果是:" R8 C" |3 H6 n: X6 T
7 B: k x1 k& ?" E K& joosLoss = 0.0400( J/ E: h7 M4 G$ V8 O2 `# S% J H
) y5 a! B3 J, D4 [: a# @- s2 C p7 E$ F这表明分类的效果很好! |
|