将sklearn的Scaler对象保存为JSON而不是pickle

4

我想了解是否有一种被认可的方法可以将sklearn对象保存为json,而不是将它们进行pickling。

我对此感兴趣是因为将其保存为json将占用更少的存储空间,并使将对象保存到类似redis之类的数据库变得更加简单。

特别是对于像ColumnTransformer这样的东西,我只需要特定特征的均值和标准差。有了这个,我就可以轻松地重建转换器,但是在从保存的json对象重构转换器对象时,我必须手动设置已学习和私有属性,这感觉很hacky。

我找到的最接近的内容是这篇文章:https://stackabuse.com/scikit-learn-save-and-restore-models/

其他人是否也是这样处理的呢?

是什么阻止了sklearn将这种功能集成到库中呢?

谢谢!

1个回答

2

我认为这个软件包是您正在寻找的https://pypi.org/project/sklearn-json/

将scikit-learn模型文件导出为JSON,以便共享或部署预测模型。

以下代码片段来自上面的链接,展示了如何将sklearn模型导出为json:

import sklearn_json as skljson
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier(n_estimators=10, max_depth=5, random_state=0).fit(X, y)

skljson.to_json(model, file_name)
deserialized_model = skljson.from_json(file_name)

deserialized_model.predict(X)

此外,为回答json vs. pickle问题,这可能会有所帮助 Pickle or json?

这是一个不错的包,但据我所知,它只实现了一小部分模型类——没有像FeatureUnion或Pipeline对象那样可以一起序列化的东西(作为pickle/joblib的替代品)。 - lefft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接