留出一个在MATLAB交叉验证算法

问题描述 投票:1回答:1

难道有人知道如何在MATLAB执行留出一个交叉验证?我需要对数据进行分类LOOCV算法。因此,举例来说。我的训练次数设为10,我要拿出从测试训练集之​​一。所以,这就像1 =测试和9培训,并重新做,直到最后的数据训练。

怎么样,如果我们有这样的癌症和癌症没有数据训练:

[C,F] = training('D:\cancer\',...
    'D:\nocancer\');
matlab loops
1个回答
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。希望这有助于。

© www.soinside.com 2019 - 2024. All rights reserved.