我正在使用Random Forest Regressor python的scikit-learn模块来预测一些值。我使用 joblib.dump 来保存模型。有 24 个 joblib.dump 文件,每个文件的权重为 45 兆字节(所有文件的总和 = 931mb)。我的问题是:
我想在一个程序中加载所有这些 24 个文件来预测 24 个值 - 但我做不到。它给出一个内存错误。如何在一个程序中加载所有 24 个 joblib 文件而没有任何错误?
提前感谢...
选项很少,具体取决于内存不足的确切位置。
- 由于您基于相同的输入数据预测 24 个不同的值,因此您可以按顺序进行预测。因此,您一次只在内存中保留一个 RFR。
例如:
predictions = []
for regressor_file in all_regressors:
regressor = joblib.load(regressor_file)
predictions.append(regressor.predict(X))
(可能不适用于您的情况,但此问题很常见)。加载大量输入数据时,内存可能不足。要解决此问题 - 您可以拆分输入数据并对子批次运行预测。当我们从本地运行预测转向 EC2 时,这对我们很有帮助。尝试在较小的输入数据集上运行代码,以测试这是否有帮助。
您可能需要优化 RFR 的参数。您可能会发现,对于较浅的树木或较少数量的树(或两者兼而有之),您可以获得相同的预测能力。建造一个不必要的随机森林非常容易。当然,这是特定于问题的。我必须减少树的数量并缩小树,以使模型在生产中高效运行。就我而言,AUC 在优化之前/之后是相同的。模型调优的最后一步有时会在教程中省略。