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