簡體   English   中英

如何使用Matlab執行10折交叉驗證?

[英]How to perform 10 fold crossvalidation using matlab?

我正在嘗試對線性回歸模型執行10倍交叉驗證(CV),以確定CV_mean平方誤差。 我的數據在Matlab中以<500x1>的兩倍包含500個項目。

如果您有權訪問統計信息工具箱,則可以使用cvpartition

如果您有權訪問生物信息學工具箱,則可以使用crossvalind

如果您無權訪問任何工具箱,則必須編寫自己的函數。 似乎有一個SO進入這個

編輯

我鏈接的內容似乎很漫長。 我懷疑這是有效的,但是您可以編寫如下函數:

function [TrainInd, TestInd] = KFold(k, NoFolds, length)

    start = floor((k-1)*length/NoFolds)+1;
    stop = floor(k*length/NoFolds);
    TestInd = false(1,length);
    TestInd(start:stop) = true;
    TrainInd = ~TestInd;

end

然后這樣稱呼它:

for k = 1:10
   [TrainInd, TestInd] = KFold(k,10,11);
   TrainData = x(TrainInd);
   TestData = x(TestInd);
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM