|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:
2 x" X( e! C7 m: W2 {% s9 N! ^9 Q, E5 J0 Q! T; t: ^
例子:
; X7 ?8 \3 B% A$ j! O# j# @, f; u, `% |& v/ a
先导入数据:
( a" f. }$ p% s+ L' G
& c: Y. [: @ E- load fisheriris
- X = meas;
- Y = species;9 N* ?& J( @+ l5 {
& s0 M4 R; N5 [! _2 g[color=rgb(51, 102, 153) !important]复制代码
2 f* k0 z- e2 ~创建一个SVM模版:$ b8 w& i2 D) i$ y
D! f! a K& b( W) Z& v" a- t = templateSVM('Standardize',1)
* ?; ~4 N% R+ s ; D2 s( ?* r$ q
[color=rgb(51, 102, 153) !important]复制代码
7 H. C1 }$ i y- B, d. T( B* {5 {6 p
; \- {5 V/ n$ I0 w
8 ]. r5 v# }; o训练这个分类器,这是14b新推出的功能:
1 A8 v8 J& j/ }! @, }) ~) ^
- R. p, {" {) N1 b" L! n3 f6 [# d- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});+ h C; C0 T A+ _7 k3 \* U
6 N8 t7 g( Z% R4 D) T[color=rgb(51, 102, 153) !important]复制代码; y+ l5 Z" d( W6 ^) Q
3 Z, Z4 R! i! M# N3 L! ], z0 e2 @8 C' F9 E% ^+ \
训练好以后,可以验证SVM模型:4 a" L& q( U. c; V$ S# P( ]5 O
- ^! l1 \$ y/ y9 A- CVMdl = crossval(Mdl);
0 y8 O5 g1 X, {- o* V! _9 k
0 n; g( N: _- t[color=rgb(51, 102, 153) !important]复制代码
! F! Y9 K# P( l* z
9 c8 L5 H. D3 z& i3 N2 j显示验证的结果:
6 E& M* z, \/ ^' q. z3 J' ?- oosLoss = kfoldLoss(CVMdl)
- r' b" n- N1 c' R8 f
7 L4 V( y6 X1 O. D. O+ O; _. |[color=rgb(51, 102, 153) !important]复制代码
! s' u; y' t! `- N9 v/ v
$ t7 s4 t' H, D$ b9 F2 y8 w6 ~/ {6 e2 G i, t& b0 P! Y
对于这个分类器,我们的验证结果是:
. ~4 H3 V' r; x6 C2 d* n0 I' {: F- S' d' V& I3 I$ L$ l8 u
oosLoss = 0.0400
. ~3 q3 @$ t5 d+ R5 U& x
) H) A! ~6 m7 |' c- P( D0 f6 o8 b这表明分类的效果很好! |
|