|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:. P. @8 j: e: L% h% }
9 ~5 {' g' {3 r% R$ R
例子:5 I3 A Q# q2 d2 H4 R$ d
& t% t: L' \5 k) Y( m先导入数据:
v! Q$ a" w0 S4 `& o
' L' Y% s, X, x/ T E( }- load fisheriris
- X = meas;
- Y = species;
# }6 ~. ?9 l' v
$ I5 K* y( K, X+ [1 D9 K; I% a[color=rgb(51, 102, 153) !important]复制代码
1 J$ g8 v/ K' x0 ?1 C& X创建一个SVM模版:0 h K9 X$ M# h. d
m! s% R( X8 h# V J! Y8 w/ R! N- t = templateSVM('Standardize',1)4 D9 g/ S. @9 m/ O% W0 d0 e
8 ~0 X5 k0 M( M& Y/ D' ^/ f- [[color=rgb(51, 102, 153) !important]复制代码8 S( T4 H# T# n. a
: S1 g: T6 E, c: c) z5 v, ]! P" A, K# E2 A. H
训练这个分类器,这是14b新推出的功能:
i8 [/ K2 o1 Y9 E! U# E3 ]
9 ~% l# E( i9 O3 X. V* h7 z" f1 q- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});
8 i7 W% i. |! T1 j7 P) i0 @ i* j+ ` $ I. L, h: u& I3 V5 u* I
[color=rgb(51, 102, 153) !important]复制代码
/ ?) P3 l% @: z3 p0 i4 M/ I1 s5 ], T% ?& {2 O( m3 J
8 b9 G: q) @1 c" \ G( t2 n6 F1 N$ E
训练好以后,可以验证SVM模型:4 o& I3 x5 v( w# v
0 U' T% W8 F( M3 W3 g1 I# _6 d s4 c
- CVMdl = crossval(Mdl);
8 z% J; b: K& o8 v j' J
7 a& r; L2 G1 W) R[color=rgb(51, 102, 153) !important]复制代码
) f3 g4 P' w0 P' L
" S4 o3 }% w% e! k& n) l% h3 N显示验证的结果:# Z% v& N! j" ?5 B7 O- Y0 V! J
- oosLoss = kfoldLoss(CVMdl)
' ?7 A e1 \) o g& j% H
- Q, L6 i/ J3 E+ r[color=rgb(51, 102, 153) !important]复制代码
/ u6 q1 q5 V& Y
. A$ r+ Q* ^/ \6 y3 z2 I2 q! {6 L% c# N2 [) k8 K
对于这个分类器,我们的验证结果是:, T1 k1 X8 D* }$ e9 |
( Q0 L u& q; [ ~( Q
oosLoss = 0.0400' f6 r- b4 t, T" z- M
6 r9 [3 o( d$ m( y; L0 j这表明分类的效果很好! |
|