按比例随机分配训练集和测试集和数组间隔取值
按比例随机分配训练集和测试集
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矩阵行倒序和列倒序的矩阵。