您的位置:首页 > 编程语言 > MATLAB

Matlab交叉验证函数——crossvalind

2016-04-29 11:28 1726 查看

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




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 matlab