我应该如何将大型(~50Gb)数据集划分为训练,测试和验证集?

时间:2013-03-19 23:12:02

标签: python numpy dataset

我有一个大型数据集。它目前采用numpy.array.tofile()创建的未压缩numpy数组文件的形式。每个文件大约有100000行,每行363个浮点数。共有192个文件,共52 Gb。

我想将这个数据的随机五分之一分成一个测试集,并将该测试集的随机五分之一分成一个验证集。

另外,我一次只能训练1 Gb(GPU的板载内存限制)所以我​​需要随机化所有数据的顺序,这样我就不会通过训练数据来引入偏差订购它被收集。

我的主内存大小为8 Gb。任何人都可以推荐一种随机化和分割这个巨大数据集的方法吗?

2 个答案:

答案 0 :(得分:1)

我在External shuffle: shuffling large amount of data out of memory

找到了我需要的答案

基本上,你会发现一个对数字足够随机的哈希值(在这种情况下我使用Murmur3)然后你应用外部合并排序。

答案 1 :(得分:0)

您可以为每一行分配一个唯一的序号,然后选择这些数字的随机样本,然后将每个相关行连续提取到一个新文件中。