|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在MATLAB 14b之前,MATLAB自带的SVM工具对两个类别的分类(binary)支持的非常好。看到很多会员问如何使用MATLAB自带的SVM工具来实现多个类别的分类。在MATLAB R2014b里,这个功能已经被实现了:: a8 m, J- e9 ^+ A
( F3 i# W+ Y. K! N例子:7 Y) z$ w& C9 O2 R- Z# G
) b$ B. x0 I5 ?: ^3 w
先导入数据:
M; P: O. i* F4 M# B
- \" n' x2 {9 g# \7 P- load fisheriris
- X = meas;
- Y = species;' k1 P- U, j; s7 _
( f7 V8 W+ f& Z5 i4 I8 {. T
[color=rgb(51, 102, 153) !important]复制代码
1 C) J$ M* p& R4 t% X# S创建一个SVM模版:! D: k! `# \- Z
) p: J q$ w4 G+ s9 D: x; k
- t = templateSVM('Standardize',1)
) t; y" H: W. i
8 c9 b Y4 F/ a7 x' r% B( g. q! T[color=rgb(51, 102, 153) !important]复制代码
% y. x( p, k$ P$ X7 Q/ F, \! n$ W/ K. O3 P4 C: i; A
1 g' Y6 F r8 g: K" Z训练这个分类器,这是14b新推出的功能:
: n/ ~5 m8 y, s- f
) _+ D9 f9 h) e3 ~& P' B) j& E, e- Mdl = fitcecoc(X,Y,'Learners',t,...
- 'ClassNames',{'setosa','versicolor','virginica'});
/ k$ g: J- o+ B8 P! D$ Y2 r5 K2 g
5 y# i6 T8 t& o. P' ?+ \- [[color=rgb(51, 102, 153) !important]复制代码
# ?! J8 v6 Z/ v) \5 {6 Z' q
! X) q, c0 ?+ D* R
# T2 @# ^9 m9 E3 r% }5 N训练好以后,可以验证SVM模型:
. X, m4 w. F- ]0 A$ t' f
2 h+ @, D6 _3 ? u1 H- CVMdl = crossval(Mdl);; N" Y5 }' V$ k- N/ V6 r. O
8 s, d& | g P- ]* F[color=rgb(51, 102, 153) !important]复制代码- {. o8 J9 ^ e
! L- C5 S8 p& j1 o7 S显示验证的结果:0 J# v) i& b6 H% ~' m% Z3 t
- oosLoss = kfoldLoss(CVMdl)7 l* H3 ]$ t; z9 G! }) q
O1 B! ?( i( C+ M; n7 f8 a/ j. |
[color=rgb(51, 102, 153) !important]复制代码% ?, Z' ?) f% T0 E3 S, k. i2 k0 }
2 K2 z9 @2 K, ]7 D$ V# x% j
! C$ }! o1 e: N- @" F" u
对于这个分类器,我们的验证结果是:
O7 T: t- L5 l8 \. h @
; L* ]3 k! v' C, yoosLoss = 0.0400
1 |3 f' E; A5 k% U. E T. [' `. ^" E' F. D. P' ~+ X! F* \% w4 o
这表明分类的效果很好! |
|