Matlab:如何在保留标签信息的同时将数据矩阵拆分为两个随机的列向量子集?

use*_*834 5 matlab label sample machine-learning

我有一个数据矩阵X(60x208)和一个标签矩阵Y(1x208).我想将我的数据矩阵X分成两个随机的列向量子集:训练(将是70%的数据)和测试(将是30%的数据),但我仍然需要确定哪个Y的标签对应于每个列向量.我找不到任何功能,任何想法?

编辑:我想我应该添加,Y中只有两个标签:1和2(不确定这是否有所不同)

ray*_*ica 10

这很容易做到.使用randperm从生成指数的随机排列1多达点多,你有...这是你的情况208.

生成此序列后,只需将此和子集用于您的序列,XY提取培训和测试数据和标签.因此,做这样的事情:

num_points = size(X,2);
split_point = round(num_points*0.7);
seq = randperm(num_points);
X_train = X(:,seq(1:split_point));
Y_train = Y(seq(1:split_point));
X_test = X(:,seq(split_point+1:end));
Y_test = Y(seq(split_point+1:end));
Run Code Online (Sandbox Code Playgroud)

split_point决定了我们需要多少分,将它放在我们的训练集,我们将需要详谈这一计算产生任何小数点情况.我也没有硬编码208因为你的数据集可能会增长,所以这适用于你选择的任何大小的数据集. X_train并且Y_train将包含您的数据和标签的训练集,而X_testY_test将包含您的数据和标签的测试集.

因此,第一列X_train是训练集的第一个元素的数据点,第一个元素Y_train用作特定点的标签......依此类推!