|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:
/ Z$ d( E& E; @6 P# E2 S0 a0 J: k$ s, ~
例子:
3 \! V* B8 Y( H/ t) B9 M# A f; z3 B+ l! k$ U3 d0 t
先导入数据:" B) W+ ~: m5 ]+ |4 Y5 E2 X5 F" U9 h. b
& P+ f! i, B% F+ h1 K2 Y- load fisheriris
- X = meas;
- Y = species;& |" @. B! N% k; l e
8 g6 L; O5 ]- ?* B% y
[color=rgb(51, 102, 153) !important]复制代码% Q/ L: b6 x8 [9 k
创建一个SVM模版:
* r C' f4 S: l7 K& X: b+ B' t, b( f1 C
- t = templateSVM('Standardize',1)
, u4 F/ f) h i% F4 A * p# ?( q. Y# h; V3 O( K# x
[color=rgb(51, 102, 153) !important]复制代码
8 Z) \" _; r. y$ }, u
' L# h) ?" j/ Z% R7 g- r( P \" W! N' A1 ]9 h: A6 i# l
训练这个分类器,这是14b新推出的功能:
. K7 @3 d8 ^0 e2 X* L6 J+ o. n) y5 w2 U. f
- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});
+ p+ e1 O4 C4 t. q5 K( \3 c b
+ m/ h# W7 ^0 S; H: G5 Q[color=rgb(51, 102, 153) !important]复制代码/ _0 u# S/ o8 F
5 a, U- S2 k$ }5 E; k8 K
' u' {6 Y& v' h8 y1 ~训练好以后,可以验证SVM模型:" H' T% w# b; i
( F5 a1 m) K! L- N. k- s
- CVMdl = crossval(Mdl);
2 \0 D6 _; {/ b; l2 |
! b( T" U5 T T[color=rgb(51, 102, 153) !important]复制代码9 U$ H' p$ @% C& k- N4 t
6 v: r5 z9 e% b! _# h显示验证的结果:% q6 }; q0 ]8 q6 S5 C& k$ l7 T8 K
- oosLoss = kfoldLoss(CVMdl)
1 u" e. {3 m; l0 X# I1 B5 G, j 4 f3 G- Y1 n: n1 Q
[color=rgb(51, 102, 153) !important]复制代码0 L( L$ B% ]+ c
: @5 h% ~! R3 s" H% F( G( {
1 G) Q0 L2 _- V/ O! d7 i对于这个分类器,我们的验证结果是:
- K* @: x" D6 I [9 u
: l0 p) h+ x6 t5 ~oosLoss = 0.0400+ `+ [ q4 y+ g* j. e4 }$ h* S
/ f/ Q! u W& T1 U0 P' t
这表明分类的效果很好! |
|