joblib.load文件加载出错

时间:2013-01-28 07:46:52

标签: python numpy pickle scikit-learn

我使用Random Forest Regressor python的scikit-learn模块来预测某些值。我使用joblib.dump来保存模型。有24个joblib.dump文件,每个权重45兆字节(所有文件的总和= 931mb)。我的问题是:

我想在一个程序中加载所有这24个文件来预测24个值 - 但我不能这样做。它给出了一个MemoryError。如何在一个程序中加载所有24个joblib文件而没有任何错误?

提前致谢...

1 个答案:

答案 0 :(得分:0)

几乎没有选项,具体取决于你内存耗尽的确切位置。

  • 由于您预测了24个不同的值,基于相同的输入数据,您可以按顺序进行预测。因此,您一次只能在内存中保留一个RFR。

e.g:

predictions = []
for regressor_file in all_regressors:
    regressor = joblib.load(regressor_file)
    predictions.append(regressor.predict(X))
  • (可能不适用于您的情况,但此问题非常常见)。 加载大批输入数据时,可能会耗尽内存。要解决此问题 - 您可以拆分输入数据并在子批次上运行预测。当我们从本地运行预测转向EC2时,这帮助了我们。尝试在较小的输入数据集上运行代码,以测试这是否有帮助。

  • 您可能希望优化RFR的参数。您可能会发现,您可以使用较浅的树或较少的树(或两者)获得相同的预测能力。构建一个不必要的大型随机森林非常容易。当然,这是特定于问题的。我不得不减少树木的数量,减少树木的数量,使模型在生产中高效运行。就我而言,AUC在优化之前/之后是相同的。模型调优的最后一步有时会在教程中省略。