|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:
; P7 e2 t0 Z$ E( V( q! W9 p
$ M4 q9 z& Q: j$ r) V例子: ?. |* ?0 A2 s/ E/ r
, s0 m( J4 E7 g0 t7 l$ x* H先导入数据:
z; b4 O: p1 Q( V, ^- J
7 h0 R a. R& L- load fisheriris
- X = meas;
- Y = species;
0 w0 J+ {5 L: o i! I! p * H+ h& U( ?3 P& }! K2 t
[color=rgb(51, 102, 153) !important]复制代码 D1 m( M% _& t$ E* S. s, ]. A
创建一个SVM模版:+ b2 M9 X, F2 {% N
4 _. |# T- ^6 A% h' a
- t = templateSVM('Standardize',1)
, R4 j, ?, S, g% |; u* I4 I
" z; {$ E0 w J D( O4 d[color=rgb(51, 102, 153) !important]复制代码
$ o) l9 Z! ^. Q( L1 ~0 R+ O4 J: B) M6 [0 s
, u2 C' r" a( L" c( P- R! F
训练这个分类器,这是14b新推出的功能:, }# z B0 Z O) G6 g4 m
% F4 C; T$ I/ d/ s7 ?1 ]2 p0 U F: D- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});
$ R" {$ p) [8 F0 q9 c
. h f$ ~+ F$ n# u2 Y2 X% B[color=rgb(51, 102, 153) !important]复制代码
. q1 E0 c* j$ ~0 z2 h4 f- m8 m( e
8 J4 a7 X4 E; P* S1 K! y训练好以后,可以验证SVM模型:
9 p0 m6 O7 ?, g$ P" F; ~& H/ X/ `
% f, W% D7 q; u- CVMdl = crossval(Mdl);" v! ^( m1 R a& ]- h) m
& z3 j$ y5 S- o, e( e6 d
[color=rgb(51, 102, 153) !important]复制代码: A3 M+ Y0 a' }1 R& Z, }
3 Y7 m8 D" F$ l+ w
显示验证的结果:* V! A1 s( Y* U
- oosLoss = kfoldLoss(CVMdl)
% i9 r4 ?# m+ l! h& o4 e+ ?# p 6 g0 r" f# {* H0 X6 j
[color=rgb(51, 102, 153) !important]复制代码& D h C! e1 k
$ P. _9 F$ c7 U( m9 _7 P7 s, s' K; u' R1 u( F! {
对于这个分类器,我们的验证结果是:, ~, N. q, a& h+ o# O
% q( I$ P7 I6 DoosLoss = 0.0400
$ ?4 _$ z; I C7 d! \9 i! \1 e, z1 _- s0 Z. B9 {
这表明分类的效果很好! |
|