总会有奇奇怪怪的想法和需求。。。
想要产生的交叉验证的索引可以重现(虽然可以采取保存的方式)
目录
一、随机选取
1、产生索引
2、调用数据
打乱数据
二、顺序选择,循环选取
1、数据初始化,样本个数、训练样本个数等
2、 产生训练数据的索引
3、存/调用数据
一、随机选取
1、产生索引
生成的是类似 [1,3,5,2...] ,随机产生1-fold的整数值组成索引向量indices,提供两种方式
(1)调用函数
结果不能重现,也可能我没有找到结果可以重现的调用方法 -_-
% 交叉验证 调用函数
[m,n] = size(data);
fold = 5;
indices = crossvalind('Kfold',data(1:m,n),fold); % 索引 随机产生1-fold 的元素值
(2) 产生概率相同的随机数,利用种子控制结果的重现
P.s.:如果100个数据分成5折,每一折的个数并不相等,但是相差不多
% 产生交叉验证的索引 结果可以重现
fold = 5; % 5折交叉验证
alphabet = 1:fold; prob = ones(1,fold)/fold;
rng(2); % 设置种子,每次产生的数据一样
indices = randsrc(m,1,[alphabet; prob]); % 索引 以一定概率产生的随机数 m-样本数
2、调用数据
% 划分数据集