有人知道如何执行在MATLAB中留出一个交叉验证吗?我需要LOOCV算法进行数据分类。所以举个例子。我有训练集10的数量,我想从训练集中取出一个用于测试。所以,它就像是1 =测试,9是培训,并且在最后一次数据培训之前再次进行测试。
如果我们接受像这种癌症那样的数据培训并且没有癌症,那该怎么样:
[C,F] = training('D:\cancer\',...
'D:\nocancer\');
答案 0 :(得分:1)
以下是我的工作:
// 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即可。希望这有帮助。