Matlab:如何在保持标签信息的同时将我的数据矩阵分成两个随机的列向量子集?
我有一个数据矩阵X(60x208)和一个矩阵Y(1x208)。 我想将我的数据矩阵X分成两个随机的列向量子集:训练(这将是数据的70%)和测试(这将是数据的30%),但是我仍然需要能够识别哪些来自Y的标签对应于每个列向量。 我找不到任何功能来做到这一点,有什么想法?
编辑:以为我应该补充说,Y中只有两个标签:1和2(不知道这是否有所作为)
这很容易做到。 使用randperm
生成一个随机排列的索引,从1
到最多的点数就是你的情况下的数量,即208。
一旦你产生这个序列,只需使用这个和子集到你的X
和Y
来提取训练和测试数据和标签。 因此,做这样的事情:
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));
split_point
决定了我们需要将多少点放入我们的训练集中,并且我们需要对它进行四舍五入以防计算结果产生任何小数点。 我也没有硬编码208,因为你的数据集可能会增长,所以这将适用于你选择的任何大小的数据集。 X_train
和Y_train
将包含您的训练集的数据和标签,而X_test
和Y_test
将包含您的测试集的数据和标签。
因此, X_train
的第一列是您的训练集的第一个元素的数据点, Y_train
的第一个元素用作该特定点的标签......等等,等等!