在scikit-learn中运行Randomforest的MemoryError

时间:2015-04-17 04:18:05

标签: python python-2.7 machine-learning scikit-learn

我正在关注For Beginners - Bag of Words中给出的Python示例。但是,以下代码段会显示错误消息,如MemoryError。可能导致此错误的原因

forest = forest.fit(train_data_features, train["sentiment"])

Traceback (most recent call last):
File "C:/Users/PycharmProjects/Project3/demo4.py", line 60, in <module>
   forest = forest.fit(train_data_features, train["sentiment"])
File "C:\Users\AppData\Roaming\Python\Python27\site-        
   packages\sklearn\ensemble\forest.py", line 195, in fit
X = check_array(X, dtype=DTYPE, accept_sparse="csc")
File "C:\Users\AppData\Roaming\Python\Python27\site-
   packages\sklearn\utils\validation.py", line 341, in check_array
   array = np.array(array, dtype=dtype, order=order, copy=copy)
MemoryError

2 个答案:

答案 0 :(得分:4)

顾名思义,

MemoryError意味着您的可用内存耗尽。

如果您正在关注here中的示例代码,那么有一些事情可以帮助您:

  • 当您不再需要时,使用del删除变量 (例如,第62行后不需要clean_train_reviews
  • 在第42行之后,只需要train["sentiment"],其余的train可以被丢弃以释放内存
  • 在开始时不要阅读培训和测试集。只有在构建森林之后才需要test集,此时不再需要与火车集相关的任何其他内容。
  • 整个训练部分可以包裹在一个返回森林的函数中,该函数将处理之后不再需要的所有引用。

答案 1 :(得分:0)

在指定的示例中,单词包包含5000个特征;这需要大量记忆。因此,一种解决方案是减少功能的数量,但这样做可能会影响模型性能。 另一种解决方案是从32​​位Python切换到64位。