joblib.load 文件加载错误

4 投票
1 回答
3576 浏览
提问于 2025-04-17 13:54

我正在使用Python的scikit-learn模块里的随机森林回归器来预测一些数值。我用joblib.dump保存了模型。现在有24个joblib.dump文件,每个文件大约45兆字节(所有文件加起来是931兆字节)。我的问题是:

我想在一个程序中加载这24个文件来预测24个值,但我做不到。程序报了内存错误(MemoryError)。我该如何在一个程序中加载这24个joblib文件而不出错呢?

提前谢谢你…

1 个回答

1

根据你内存不足的具体情况,有几种解决方案。

  • 因为你要根据同样的输入数据预测24个不同的值,所以可以一个一个地进行预测。这样你每次只需要在内存中保留一个随机森林模型(RFR)。

例如:

predictions = []
for regressor_file in all_regressors:
    regressor = joblib.load(regressor_file)
    predictions.append(regressor.predict(X))
  • (这可能不适用于你的情况,但这个问题很常见)。当你加载一大批输入数据时,可能会出现内存不足的情况。为了解决这个问题,你可以把输入数据分成小批次,然后对每个小批次进行预测。这在我们从本地运行预测转到EC2时帮了我们。你可以尝试用更小的数据集来运行你的代码,看看这样是否有帮助。

  • 你可能需要优化随机森林模型的参数。你会发现,使用更浅的树或者更少的树(或者两者结合)也能达到相同的预测效果。构建一个不必要庞大的随机森林模型是很容易的。当然,这要根据具体问题来定。我在生产环境中需要减少树的数量并让树变小,以提高模型的运行效率。在我的情况下,优化前后的AUC是一样的。这个模型调优的最后一步有时在教程中会被忽略。

撰写回答