【发布时间】:2018-03-03 12:31:49
【问题描述】:
我有一个大小为 6 GB 的 CSV 格式的训练数据集,我需要对其进行分析和实施机器学习。我的系统 RAM 为 6 GB,因此我无法将文件加载到内存中。我需要执行随机抽样并从数据集中加载样本。样品数量可根据要求而有所不同。这个怎么做?
【问题讨论】:
-
您可以使用 Python CSV 阅读器分块加载文件并从每个块中采样。
-
Reading a huge .csv file 的可能重复项。还有其他类似的问答部分有不同的答案。
-
是的,我试过了,但我不知道我的数据集的实际大小,所以我无法正确创建块,最终导致我的系统超载
-
这里有很多关于 SO 的解决方案,其中一些使用 itertools.islice 来消耗未采样的行 - Itertools Recipes 中有一个
consume函数。您应该能够使这种方法发挥作用。 -
我也喜欢这个答案stackoverflow.com/a/6347142/2823755 - 单次遍历文件以创建行索引/位置列表。然后你寻找你想要采样的线。
标签: python csv machine-learning dataset