保存没有数据集的 scikit-learn 模型

Save scikit-learn model without datasets

我用 sklearn 库训练了一个 RandomForestClassifier 模型,并用 joblib 保存了它。现在,我有一个将近 1GB 的 joblib 文件,我正在 Nginx/Flask/Guincorn 堆栈上部署它。问题是我必须找到一种有效的方法来从文件加载此模型并为 API 请求提供服务。执行时是否可以在没有数据集的情况下保存模型:

joblib.dump(model, '/kaggle/working/mymodel.joblib')
print("random classifier saved")

Scikit-Learn 估计器的持久表示 包括任何训练数据。

谈到决策树及其集成(例如随机森林),然后估计器对象的大小与决策树的深度(即 max_depth 参数)呈二次方关系。之所以如此,是因为决策树配置是使用 (max_depth, max_depth) 矩阵(float64 数据类型)表示的。

您可以通过限制 max_depth 参数来缩小您的随机森林对象。如果您担心预测性能的潜在损失,您可以增加子估计器的数量。

从长远来看,您可能希望探索 Scikit-Learn 模型的替代表示。例如,使用 SkLearn2PMML 包将它们转换为 PMML 数据格式。