matlab的功能很强大,各种toolbox中有丰富的函数,有了它们你不必亲自编写很多代码就可以展开相关实验。但是在浩瀚的toolbox函数库中,我们常常不知道已有现成的合适函数,反而自己苦苦coding了半天。本文正是为您介绍使用matlab statistical toolbox中自带的函数来做分类实验。
具体的方法和函数描述我就不赘述了。大家可以参看statistical toolbox的Demo,在Demo的Multivariate Analysis一栏下有个classification的页面,介绍的很详细。下面我只是抽其要点做个记录。
基于cross validation的分类实验流程(matlab中的例子是用cvpartition类来完成的,我不太喜欢用类,所以用了Bioinformatics Toolbox中的交叉验证样本集划分的函数crossvalind):
% 载入数据(设有X和Y分别表示样本特征和标签)
load filename;
sample_N = length(Y);
% 划分样本集
K = 10; % 设定交叉验证的fold数目
indices = crossvalind('Kfold', sample_N, K);
predictY = zeros(sample_N,1);
for i= 1:K
indxt_test = (indices == i);
indxt_train = ~indxt_test;
predictY(indxt_test ,1) = YourClassificationFunction(X(indxt_train ,:),Y(indxt_train ,:),X(indxt_test,:), ...);
end
C = confusionmat(Y,predictY); % 计算confusion matrix,什么性能指标都好算了