【问题标题】:Leave one out cross validation algorithm in matlab在matlab中留下一个交叉验证算法
【发布时间】:2013-03-04 05:48:24
【问题描述】:

有人知道如何在 MATLAB 中执行 Leave one out 交叉验证吗?我需要 LOOCV 算法进行数据分类。所以例如。我有训练集的数量 10 ,我想从训练集中取出一个进行测试。所以,这就像 1 = 测试和 9 用于训练,然后再做一次,直到最后一次数据训练。

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

[C,F] = training('D:\cancer\',...
    'D:\nocancer\');

【问题讨论】:

  • 看我的回答here

标签: matlab loops


【解决方案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 替换为您使用的任何分类器即可。希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    • 2019-10-27
    相关资源
    最近更新 更多