1
如何執行對數據集的k折交叉驗證,說十K-折交叉驗證
我已經通過MATLAB網站消失了,曾經嘗試這樣做的一個數據集合X 以下是對集合X
c= cvcrossvalidate(X,'kFold',10);
這將創建一個對象c
10折交叉驗證碼,但我怎麼訪問不同的部位,並用它們來測試我的分類?即使閱讀各種文本,我也無法理解。
如何執行對數據集的k折交叉驗證,說十K-折交叉驗證
我已經通過MATLAB網站消失了,曾經嘗試這樣做的一個數據集合X 以下是對集合X
c= cvcrossvalidate(X,'kFold',10);
這將創建一個對象c
10折交叉驗證碼,但我怎麼訪問不同的部位,並用它們來測試我的分類?即使閱讀各種文本,我也無法理解。
關注這個:
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
=您的數據集。
爲什麼只將crossvalind應用於標籤......關於X呢? Test =(C == i);意思是......以及下一行......你是否會友好地解釋代碼? –
'K-fold'是測試您的數據以及獲得非常高性能的最佳方式。它的工作原理是這樣的: (1) - 'C'將攜帶數據標籤和10個隨機樣本(用於測試)。 (2) - 在循環內部,讓變量'Test'從隨機的10個已經在'C'中的樣本中取一個樣本。 (3) - 'Train =〜Test'意味着使用所有其他數據(除了'Test'中的樣本)作爲訓練數據。所以你只有'Test'中的一個樣本和'Train'中的所有其他樣本。 下一個循環將選擇一個新的樣本作爲'Test'和其他樣本作爲'Train''並且像這樣去做。祝你好運 – TARIQ