Generate cross-validation indices 生成交叉验证索引
Syntax语法
Indices = crossvalind('Kfold', N, K) %K折交叉验证
[Train, Test] = crossvalind('HoldOut', N, P) % 将原始数据随机分为两组,一组做为训练集,一组做为验证集
[Train, Test] = crossvalind('LeaveMOut', N, M) %留M法交叉验证,默认M为1,留一法交叉验证
[Train, Test] = crossvalind('Resubstitution', N, [P,Q])
[...] = crossvalind(Method, Group, ...)
[...] = crossvalind(Method, Group, ..., 'Classes', C)
[...] = crossvalind(Method, Group, ..., 'Min', MinValue)
Description描述
Indices = crossvalind('Kfold', N, K)
Indices为交叉验证索引产生的索引矩阵(向量),其值矩阵中的值均小于K,K是交叉验证的参数,如10折交叉验证中K=10,N为数据的长度或矩阵的的行数。
[Train, Test] = crossvalind('LeaveMOut', N, M),
M是整数,返回交叉索引逻辑索引向量,其中N个观测值,从N个观测值中随机选取M个观测值保留作为验证集,其余作为训练集。省略时,M默认为1,即留一法交叉验证。 在一个循环中使用LeaveMOut交叉验证不保证不连贯的验证集.使用K-fold方法替换。
例子:
10折交叉验证:
load fisheriris
indices = crossvalind('Kfold',species,10); %10为交叉验证折数
cp = classperf(species);
for i = 1:10 %实验记进行10次(交叉验证折数),求10次的平均值作为实验结果,
test = (indices == i); train = ~test; %产生测试集合训练集索引
class = classify(meas(test,:),meas(train,:),species(train,:));
classperf(cp,class,test)
end
cp.ErrorRate
留一交叉验证:
load carbig
x = Displacement; y = Acceleration;
% x为轿车形状的大小,y为轿车轿车速度从0到60公里所用时间
N = length(x);
% N为x长度=406
sse = 0;
for i = 1:100
[train,test] = crossvalind('LeaveMOut',N,1);
yhat = polyval(polyfit(x(train),y(train),2),x(test));
sse = sse + sum((yhat - y(test)).^2);
end
CVerr = sse / 100
参考:
http://blog.youkuaiyun.com/xywlpo/article/details/6531128
http://www.xuebuyuan.com/1409669.html
本文详细介绍了几种常用的交叉验证方法,包括K折交叉验证、留一法交叉验证等,并提供了具体的MATLAB实现示例。
1万+

被折叠的 条评论
为什么被折叠?



