这是设置情况:
类别数量:1806
训练数据长度为61499
特征数量为40473(当前这些是布尔值,尽管这可能会在将来改变)
平均每个训练数据在行中有大约10个1,因此有40463个0(我使用的是scipy的稀疏矩阵)。
我尝试了多种学习算法(LinearSVC表现最佳,而SGDClassifier似乎效率最高,性能仅略低于LinearSVC),以及一些降维方法(PCA,SVD),但我怀疑我的矩阵设置方式有问题?(或者可能有更好的方法,因为这种方法在类别/特征/数据显著减少时是有效的)
任何想法都非常受欢迎。
(编辑:还尝试了SGDClassifier的.partial_fit(),即使只调用了两次也花费了过长的时间,所以我没有让它完成)
回答:
MemoryError通常在可寻址内存耗尽时发生。如果您使用的是32位Python,这个错误可以通过改用64位Python来避免。有关为什么会发生这种情况的详细信息,请参见这里。