|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:
7 @; q! o% ?! Z, c8 t- U: X* ^9 t, V1 H
例子:( w2 Z- F: M2 i+ v( |4 W
$ |0 G( K" t( s9 i2 O( n% I
先导入数据:) ?7 R! X+ ^& s
d/ C0 D$ }5 m: |. C7 w$ k: _, F) b- load fisheriris
- X = meas;
- Y = species;
( s4 x: o. d, P% M% H q3 ]3 q + e- w) m* d7 o, J, z
[color=rgb(51, 102, 153) !important]复制代码
, l/ ^3 R% N; \/ L: _8 c创建一个SVM模版:7 J1 T6 X; l% M% c" I# ?& T
0 ]9 _3 a% T9 X' M {$ J: ^
- t = templateSVM('Standardize',1)/ u% K- p- ` r+ \3 R- F2 y! s
/ w0 [% Y7 W A8 }% ]3 w1 a
[color=rgb(51, 102, 153) !important]复制代码
" ^, l3 O( Z$ v* ]( T' L& H# o2 p# M3 h! j0 V
3 G: \6 e. @. R训练这个分类器,这是14b新推出的功能:9 N5 V% u1 m! X% i1 |
# f4 y; D7 P1 S
- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});! `! B L3 o% U$ S: h' c# U
/ }* F! W$ R* r+ o" `3 h6 e0 ~[color=rgb(51, 102, 153) !important]复制代码! f$ f% Q) P8 ^. {6 d8 X
+ M( R' a' T% e5 k2 s* w# s) _; G) L* q7 u
训练好以后,可以验证SVM模型:: _" A" _, a: [5 [6 a( g- h
6 m9 l# U4 {6 ~ t4 M) B" i
- CVMdl = crossval(Mdl);" n1 V) d5 s; t6 D3 ^# @
% o, g1 p) L: ^ ][color=rgb(51, 102, 153) !important]复制代码5 A* a5 h8 V" M$ q2 X) A1 d' o( V# E$ J
; v0 Q; X, R4 o/ Y显示验证的结果:
, J6 | [) ?+ ?$ z, X- oosLoss = kfoldLoss(CVMdl). Z* }2 v4 T/ ^# y; |5 A
: Z! n6 G: g/ s, \* _5 w" ~* M4 j
[color=rgb(51, 102, 153) !important]复制代码: [. v) W" y$ R+ [3 g8 p
2 m$ {- Q8 M$ M8 J
+ b* @# O7 Y8 o1 A+ ]
对于这个分类器,我们的验证结果是:' x( ]7 @+ A( }" I4 e" a2 l5 P
0 g! ^5 P7 u. t8 Q- uoosLoss = 0.0400
. v& \0 m; E4 U8 t' ^2 v9 N
7 P" J B' } J0 T! I6 b- p这表明分类的效果很好! |
|