matlab中十次十折函数使用方法
crossvalind是cross-valindation的缩写,意即交叉检验。 常用的形式有:
①Indices =crossvalind(‘Kfold’, N, K)
②[Train, Test] = crossvalind(‘HoldOut’,N, P)
③[Train, Test] = crossvalind(‘LeaveMOut’,N, M)
④[Train, Test] = crossvalind(‘Resubstitution’,N, [P,Q])
①indices =crossvalind(‘Kfold’, N, K):
该命令返回一个对于N个观察样本的K个fold(意为折,有“层”之类的含义,感觉还是英文意思更形象)的标记(indices)。该标记中含有相同(或者近似相同)比例的1—K的值,将样本分为K个相斥的子集。在K-fold交叉检验中,K-1个fold用来训练,剩下的一个用来测试。此过程循环K次,每次选取不同的fold作为测试集。K的缺省值为5。 使用程序:
[m n]=size(data); %data为样本集合。每一行为一个观察样本
indices = crossvalind(‘Kfold’,m,10); %产生10个fold,即indices里有等比例的1-10
for i=1:10
test=(indices==i); %逻辑判断,每次循环选取一个fold作为测试集 train=~test; %取test的补集作为训练集,即剩下的9个fold
data_train=data(trian,:); %以上得到的数都为逻辑值,用与样本集的