|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:
7 A+ v2 C1 `, f+ ?6 {3 N# c8 x9 p& O
: B, j/ X1 j& M: S7 Y例子:1 W6 f. {! ^7 _' z" e& n
/ o/ g6 b) L$ ^+ `# F, ^
先导入数据:
- @$ K3 K% y# x7 U
6 @, v& \3 w9 J- k$ H- load fisheriris
- X = meas;
- Y = species;
! h0 o" D1 C* k3 p! s6 @: A r3 U; J/ l* \2 D/ _! [
[color=rgb(51, 102, 153) !important]复制代码
! o2 C9 ~, e% D: ^创建一个SVM模版:
5 `4 w' H {; h: L/ j3 b3 d5 F$ S' s9 R# [( t2 e& `0 n/ N7 q; ~
- t = templateSVM('Standardize',1)2 U9 u& a* `7 x
- y+ Q+ A! Y5 [" D1 c o! u
[color=rgb(51, 102, 153) !important]复制代码
. c/ g: P( X9 Z \6 d3 ~3 U2 D+ |% ]& \& w- _
0 d5 ^. Q6 t5 X" T/ p/ V
训练这个分类器,这是14b新推出的功能:+ B) I0 y. |: W2 @# W5 e
3 s6 h; S: s, M# j# d9 d$ J
- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});0 w/ j7 Y- B/ v, {) t4 Q# d9 r
9 I3 g: ~1 P3 t J[color=rgb(51, 102, 153) !important]复制代码
, M8 N ^' V! x* B- v$ ]. x
1 q* Y, C& x: C
' n7 o8 a7 I# A8 A3 D$ W训练好以后,可以验证SVM模型:
* w" Q3 S7 x" a4 d0 b! I6 w
1 G/ j8 d+ r0 c, P$ G- CVMdl = crossval(Mdl);
: z3 |# P; \6 E/ N
& g7 u! v1 h# B/ q[color=rgb(51, 102, 153) !important]复制代码
- M0 Z' U4 ~6 `; V" e6 z' n4 K* w* |
显示验证的结果:4 D5 J) H# j5 |- V& j+ F' W+ N# k8 a4 L" T
- oosLoss = kfoldLoss(CVMdl)7 R: I% b7 h1 J8 o. V
* y+ Q6 W( |0 N; j1 a
[color=rgb(51, 102, 153) !important]复制代码
, ~+ K! g" G4 ]" Q/ K/ m' U
1 P/ t0 P# q. v1 S7 _. q$ i
- i( l3 _: m3 m( L$ a. @7 W; G3 x对于这个分类器,我们的验证结果是:4 l+ p# i# v# \( ?2 d& V% D6 `3 j
' d, A- G, f& H% {* h/ n
oosLoss = 0.0400
. j6 w. f9 D7 s$ H- V
* i1 g+ j2 G2 ]* G8 S- S6 F这表明分类的效果很好! |
|