Matlab交叉验证函数——crossvalind



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





  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值