我该如何将一个大型(约50Gb)数据集分成训练集、测试集和验证集?

0 投票
2 回答
813 浏览
提问于 2025-04-17 19:41

我有一个很大的数据集。现在这些数据是以未压缩的numpy数组文件形式存在的,这些文件是用numpy.array.tofile()创建的。每个文件大约有100000行,每行有363个浮点数。总共有192个文件,大小加起来是52GB。

我想把这部分数据随机分成五分之一作为测试集,然后再从这个测试集中随机抽取五分之一作为验证集。

另外,我每次只能处理1GB的数据(因为我的GPU内存有限)。所以我需要随机打乱所有数据的顺序,这样就不会因为按照收集的顺序训练数据而引入偏差。

我的主内存是8GB。有没有人能推荐一个方法来随机打乱和划分这个庞大的数据集?

2 个回答

0

你可以给每一行数据分配一个独特的顺序编号,然后随机选择一些这些编号,再把对应的行提取到一个新文件里。

1

我在这个链接找到了我需要的答案:外部洗牌:处理大量数据时的洗牌

简单来说,你需要找到一个足够随机的哈希函数来处理数字(在这个例子中,我使用的是Murmur3),然后再进行外部归并排序。

撰写回答