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.csdn.net/xywlpo/article/details/6531128
http://www.xuebuyuan.com/1409669.html