2015-10-16 165 views
1

如何執行對數據集的k折交叉驗證,說十K-折交叉驗證

我已經通過MATLAB網站消失了,曾經嘗試這樣做的一個數據集合X 以下是對集合X

c= cvcrossvalidate(X,'kFold',10); 

這將創建一個對象c 10折交叉驗證碼,但我怎麼訪問不同的部位,並用它們來測試我的分類?即使閱讀各種文本,我也無法理解。

回答

1

關注這個:

C = crossvalind('Kfold', X_label, 10); 
for i = 1:10        
    Test = (C == i); 
    Train = ~Test;     
    SVMStruct = svmtrain (X (Train,:), X_label (Train,:)); 
    Result = svmclassify(SVMStruct, X (Test,:)); 
end 

X_label =您的數據標籤。

X =您的數據集。

+0

爲什麼只將crossvalind應用於標籤......關於X呢? Test =(C == i);意思是......以及下一行......你是否會友好地解釋代碼? –

+0

'K-fold'是測試您的數據以及獲得非常高性能的最佳方式。它的工作原理是這樣的: (1) - 'C'將攜帶數據標籤和10個隨機樣本(用於測試)。 (2) - 在循環內部,讓變量'Test'從隨機的10個已經在'C'中的樣本中取一個樣本。 (3) - 'Train =〜Test'意味着使用所有其他數據(除了'Test'中的樣本)作爲訓練數據。所以你只有'Test'中的一個樣本和'Train'中的所有其他樣本。 下一個循環將選擇一個新的樣本作爲'Test'和其他樣本作爲'Train''並且像這樣去做。祝你好運 – TARIQ