16

我对python mining太大而无法放在 RAM 中但位于单个 HD 中的数据集感兴趣。

我知道我可以将数据导出为hdf5文件,使用pytables. 还numexpr允许进行一些基本的核外计算。

接下来会发生什么?尽可能使用小批量,在不能使用小批量时依靠线性代数结果分解计算?

还是我错过了一些更高级别的工具?

感谢您的见解,

4

3 回答 3

4

你到底想做什么——你能举一两个例子吗?

numpy.memmap很简单——

为存储在磁盘上的二进制文件中的数组创建内存映射。
内存映射文件用于访问磁盘上大文件的小段,无需将整个文件读入内存。Numpy 的 memmap 是类似数组的对象......

另请参阅SO 上的numpy+memmap

scikit-learn 的人知识渊博,但更喜欢具体的问题。

于 2013-01-30T14:36:47.513 回答
3

我有类似的需求来处理 sub-map-reduce 大小的数据集。当我开始研究 python pandas 作为 SAS 的重要替代品时,我在 SO 上提出了这个问题:“Large data” work flow using pandas

那里提供的答案建议使用 pandas 的 HDF5 接口将 pandas 数据结构直接存储在磁盘上。存储后,您可以批量访问数据并逐步训练模型。例如,scikit-learn 有几个类可以在数据集的增量部分上进行训练。一个这样的例子可以在这里找到:

http://scikit-learn.org/0.13/modules/generated/sklearn.linear_model.SGDClassifier.html

任何实现该partial_fit方法的类都可以增量训练。我仍在尝试为此类问题找到可行的工作流程,并且有兴趣讨论可能的解决方案。

于 2013-03-17T19:00:14.060 回答
3

在 sklearn 0.14(将在未来几天发布)中有一个完整的文本文档核心分类示例。

我认为这可能是一个很好的例子:

http://scikit-learn.org/dev/auto_examples/applications/plot_out_of_core_classification.html

在下一个版本中,我们将使用更多分类器扩展此示例,并在用户指南中添加文档。

注意:您也可以使用 0.13 重现此示例,所有构建块都已经存在。

于 2013-07-31T08:51:59.563 回答