2013-03-15 66 views
1

有人知道如何在MATLAB中進行交叉驗證嗎?我需要LOOCV算法進行數據分類。舉個例子。我有10個訓練集,我想從訓練集中取出一個進行測試。所以,就像1 =測試和9個訓練一樣,直到最後一次數據訓練。在matlab中留下一個交叉驗證算法

怎麼樣,如果我們有這樣的癌症和癌症沒有數據訓練:

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

看看我的答案[這裏](http://stackoverflow.com/questions/15451301/how-to-create-leave-one-out-cross-validation-in-matlab) – 2013-03-17 06:04:06

回答

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。希望這個幫助。