|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:- `2 C. v1 q4 j# G3 S- o
; B- k0 @) ?9 n! q
例子:. C7 E% K5 N/ v1 Y
/ K# i3 _2 A5 c# H" X' Y' s# t先导入数据:4 x* T" f7 C H! r' l
* n4 s9 R5 {0 r
- load fisheriris
- X = meas;
- Y = species;2 o! C7 F( b/ P3 Q
& D* Y$ R" b4 o- Y. L% g
[color=rgb(51, 102, 153) !important]复制代码( h+ f+ |) {8 e, D, T v
创建一个SVM模版:
/ L% p' `& @0 \/ r6 n6 M& M4 g5 [1 ^% C
- t = templateSVM('Standardize',1); o+ d- g+ F9 B. w) [% ^# u
+ Y3 B" G& p0 Y5 Y. K6 k[color=rgb(51, 102, 153) !important]复制代码* q* l& m: @) ]( ~: o R0 z% ?
`- Z% H4 ^ {8 e. x7 l! W5 J( i, S) q+ j7 y3 B( b; l
训练这个分类器,这是14b新推出的功能:. p% r" Y4 t8 o
+ o" Y5 D# n$ W5 A
- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});( B5 D9 k+ {; X( ^# i0 c
, `! X( g/ h! I[color=rgb(51, 102, 153) !important]复制代码, j( B5 _' m3 |- v/ U7 r
7 I2 M0 D9 g5 Q' S6 n q$ z% f: r" p+ \5 _5 t# U
训练好以后,可以验证SVM模型:% ~/ X- `. w% _& s6 l' h
; j, \! a; C8 c, v' s- T
- CVMdl = crossval(Mdl);
, F, l0 c/ Q& X( D/ g ! l( v: P' ] n0 `- O, m
[color=rgb(51, 102, 153) !important]复制代码
8 d7 r" P! X# I6 ]& [
]( c$ q# U0 {" Z1 e, |8 E% |显示验证的结果:
# }. \& d* k5 `+ `# Y2 z6 X- oosLoss = kfoldLoss(CVMdl)
0 @7 U) C+ ?! u
7 W9 y; A% o7 k6 R w2 O9 R7 |[color=rgb(51, 102, 153) !important]复制代码
7 s( k$ J/ Q* Y2 G$ @5 ]3 y4 d8 z6 ^6 B0 o+ a
+ C% p. Q) k; Y; {6 F; H' @2 Y
对于这个分类器,我们的验证结果是:
; ^3 Y" V l5 v/ {9 t% [% u* Y* E. J( y) I6 l5 v# [
oosLoss = 0.0400
+ K2 |9 B4 n6 Z! d B7 Y! @4 D" P$ U0 _5 `
这表明分类的效果很好! |
|