使用sklearn .fit()和大型稀疏矩阵(当前具有布尔特征)时Python中的MemoryError

时间:2013-07-05 14:00:39

标签: python machine-learning scipy scikit-learn

以下是设置:

课程数量:1806

训练数据长度为61499

功能数量是40473(目前这些是布尔值,虽然这可能会在某些时候发生变化)

平均每个训练数据在行中有~10 1,因此40463 0(我使用的是scipy的稀疏矩阵)。

我尝试过各种各样的学习算法(linearsvc获得最佳性能,而sgdclassifier似乎效率最高,性能仅略低于linearsvc),还有一些降维(pca,svd),但我怀疑我正在设置矩阵的方式有问题吗? (或者可能只有更好的方法,因为当方法/特征/数据明显减少时,这种方法可以正常工作)

非常感谢任何想法。

(编辑:也尝试了sgdclassifier的.partial_fit(),即使有两次调用花了太长时间,所以我没有让它完成)

1 个答案:

答案 0 :(得分:0)

当您耗尽可寻址内存时,通常会发生MemoryError。如果您正在运行32位python,则通常可以通过使用64位python来避免此错误。有关发生这种情况的详细信息,请参阅here