如何使用matlab执行10次交叉验证?

时间:2015-09-07 22:17:45

标签: matlab cross-validation

我正在尝试对线性回归模型执行10倍交叉验证(CV)以确定CV_mean平方误差。我的数据由< 500x1>中的500个项目组成。在matlab中加倍。

1 个答案:

答案 0 :(得分:0)

如果您有权访问统计工具箱,则可以使用cvpartition

如果您可以访问生物信息学工具箱,则可以使用crossvalind

如果您无法访问任何工具箱,则必须编写自己的功能。 this上似乎有一个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