按比例随机分配训练集和测试集和数组间隔取值

按比例随机分配训练集和测试集

dividerand

参考:使用随机索引将目标分为三组 - MATLAB dividerand- MathWorks 中国

语法

[trainInd,valInd,testInd] = dividerand(Q,trainRatio,valRatio,testRatio)

采用要划分的目标数、用于训练的向量比率、用于验证的向量比率和用于测试的向量比率,并返回训练索引、验证索引和测试索引。 

输入:

Q — 目标数量,要划分的目标数量,指定为标量。

trainRatio — 训练比率, 即训练集占比(默认0.7 )

valRatio — 验证比率(默认0.15) 

testRatio — 测试比率(默认0.15) 

输出:

trainInd — 训练索引,以行向量形式返回。

valInd — 验证索引

testInd — 测试索引

举例:

[trainInd,~,testInd] = dividerand(P,0.7,0,0.3)  % 此时行为特征数,列为样本数
train=trainInd ;
test=testInd;

[trainInd,~,testInd] = dividerand(size(P,1),0.7,0,0.3)  % 此时行为特征数,列为样本数
train=P(trainInd,;) 
test=P(testInd,:)
trainLable=label(trainInd,;);
testLable=label(testInd,;);

randperm

也可以用randperm函数来随机排列所有的数据

[M,~]=size(feactotal);
p = randperm(M);                       % 随机排列所有的数据获得索引
train=feactotal(p(1:M*0.7),:);         % 按照7:3划分训练和测试集
test=feactotal(p(M*0.7+1:end),:);

 数组间隔取值

A(a0:num_d:a1,:)    % 间隔提取矩阵A的数据,起始行为a0,间隔行数为num_d,终止行为a1

%% 举例
>> A=[1 2 3;4 5 6; 7 8 9];
>> A(1:2:end,:)           % 提取矩阵A的奇数行数据
ans =
     1     2     3
     7     8     9

A(end:-1:1,:) A(:,end:-1:1)  % 分别返回A矩阵行倒序和列倒序的矩阵。