在Matlab中省略交叉验证算法 [英] Leave one out cross validation algorithm in matlab
本文介绍了在Matlab中省略交叉验证算法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有人知道如何在MATLAB中进行留一法交叉验证吗?我需要LOOCV算法进行数据分类.举个例子.我有10个训练集,我想从训练集中拿出一个进行测试.因此,就像1 =测试和9进行训练,然后再次进行直到最后一次数据训练为止.
Do someone know how to perform Leave one out cross validation in MATLAB?? I need LOOCV algorithm for data classification. So for example . I have the number of training set 10 , and I want to take out one from training set for testing. So, it's like 1 = testing and 9 for training, and do it again until the last data training.
如果我们接受这种癌症这样的数据培训,而没有癌症,该怎么办?
How about if we have data training like this cancer and no cancer:
[C,F] = training('D:\cancer\',...
'D:\nocancer\');
推荐答案
这就是我要做的事情:
// Initialize result matrix
Results = zeros(size(Datas,1),2);
// Validate classifier settings with leave-one-out procedure
for k=1:size(Datas,1)
// Extract sample
ind = Datas(k,:);
// Copy the database
Datas_mod = Datas;
// Copy the classes vector
Classes_mod = Classes;
// Keep the sample real class
Results(k,2) = Classes(k);
// Remove sample from database
Datas_mod(k,:) = [];
// Remove sample from class vector
Classes_mod(k) = [];
// Execute the classification algorithm
[Individu,MxD(k)] = knn(ind(1,1:size(ind,2)),Datas_mod,Classes_mod,5,700);
// Keep the class found by the classifier for the current sample
Results(k,1) = Individu(1,size(Individu,2));
end
// Confusion matrix
CM = nan_confusionmat(Results(:,1),Results(:,2)) // Scilab function, find your own
只需用您使用的分类器替换knn即可.希望有帮助.
Just replace knn by whichever classifier you're using. Hope this help.
这篇关于在Matlab中省略交叉验证算法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文