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

该博客介绍了如何在MATLAB中使用dividerand函数按比例随机地将数据集划分为训练集、验证集和测试集。通过指定不同比例,可以灵活控制每个集合的大小。此外,还提到了使用randperm函数进行数据随机排列,以实现类似的数据划分。内容涵盖了数据预处理在机器学习中的重要性,并提供了代码示例来说明如何操作。
摘要由CSDN通过智能技术生成

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

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矩阵行倒序和列倒序的矩阵。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值