|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:) u$ M, `4 b4 t L
* S' W' [5 K4 A! [" d& t例子:+ }* m+ H) O. b- q
. W/ T% o% A8 \, T6 y! p% C先导入数据:, {4 F* {. P7 E7 e9 C
5 W( H3 }% k$ b' B7 |- load fisheriris
- X = meas;
- Y = species;
- r. z k7 U* D6 B5 \' r( w9 { , ^1 e, b8 A. Q: [" N- |
[color=rgb(51, 102, 153) !important]复制代码
1 b7 ]; x+ V+ ~ d创建一个SVM模版:1 W/ C' j8 w A, c5 |
7 [- _, k9 A8 o. w- t = templateSVM('Standardize',1)
! Z5 V: ?4 f( _4 e) D, N 8 _3 ~/ X2 B$ k/ T* e* C) ~
[color=rgb(51, 102, 153) !important]复制代码% H6 f0 L9 K) T
3 Y2 Z) v; y) p9 A' U4 P; }- C2 V& ^3 y8 v$ X8 W1 E
训练这个分类器,这是14b新推出的功能:: Q) J/ q+ T7 J0 o, s2 j% b
3 l0 t8 P4 n# ^1 {; H3 h- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});
, a8 P2 J. X4 s) v @ # S5 I! Y) S7 `6 t! g7 M5 h
[color=rgb(51, 102, 153) !important]复制代码- i0 \! g* Z; r) B C% C2 Z
+ j5 _" }$ t" c* X( `- `) \, }/ Q" ]! \3 K- r" l
训练好以后,可以验证SVM模型:
/ z% q) V- c) G1 T3 _$ z! |5 h, G m" F H9 o
- CVMdl = crossval(Mdl);
% y+ o& }, C9 I L% \' {, K ! ? m! A+ T6 c, B
[color=rgb(51, 102, 153) !important]复制代码4 Y/ k3 a+ A5 l' d" S* A
3 s& [. D2 H* q( T$ R" @
显示验证的结果:
7 i# G, g8 [! ~: `4 ^! o- oosLoss = kfoldLoss(CVMdl)/ b& k, @2 ?4 y [1 Z
' ]. @4 m9 }- J( g. `! b9 H[color=rgb(51, 102, 153) !important]复制代码: D" B9 f' Q; J) s
$ J% m4 g/ W) w' O8 j3 a- W v& p# W. ]
对于这个分类器,我们的验证结果是: y5 U7 N0 w( U/ f5 X
5 j/ }4 g& ~, ToosLoss = 0.0400# G7 O& w/ ]- S4 i' q& j
0 |" r! q7 l% x7 c; ?; Y1 h; q' Y
这表明分类的效果很好! |
|