【发布时间】:2012-11-17 11:34:55
【问题描述】:
以下是从数据集中选择一组随机排列的示例,如何使用剩余的数据创建新数据集。例如,在下面我选择 49402(大约 10%)并创建一个名为 UnseenTestdata 的数据集,在选择后我希望其余部分进入一个名为 testdata 的新数据集。
pointsToPick = 49402; %# Numbers to pick
rVec = randperm(494021); %# Random permutation of datapoint indices (N=494021 in this case)
UnseenTestdata = fulldata(rVec(1:pointsToPick),:); %# Random sample
Unseentestdata 减去 fulldata = 数据集的剩余部分,恰当地命名为 testdata。
fulldata 集的维度是 494021x6,我从 fulldata 中随机选择 49402x6。然后,我需要从 fulldata 中减去 unseentestdata 剩下的内容。
Barnabas Szabolcs 添加了一个测试用例答案:
fulldata = [1 2; 3 4; 5 6; 7 8];
rVec = randperm(4);
pointsToPick=2;
unseen = fulldata(rVec(1:pointsToPick),:);
testdata = fulldata(rVec(pointsToPick:length(rVec)),:);
但是这不起作用,我已经屏幕转储了结果:
如果您在屏幕转储中注意到未见过的数据 = 3,4 和 7,8,但是如果您在测试数据中发现 7,8 仍然存在。
如果完整数据 =
1,2
3,4
5,6
7,8
在这种情况下,我们随机选择两个行,看不见的行是:
row
3,4
7,8
那么剩下的应该是:
1,2
5,6
但是,如果您在示例测试 testdata 的屏幕转储中注意到该行:
7,8
显示示例测试不起作用。
【问题讨论】:
-
你的意思是 setminus 不是吗?也可以添加fulldata的维度吗?
-
更新了我的答案,还添加了测试用例进行验证。
-
我希望你再次检查我的答案,抱歉我对那些括号很草率。 Plus 也更新了测试用例,因为它的特点是剩余元素的数量和完整数据的第二维相等。
标签: matlab