【问题标题】:Update scikit model so it is compatible with newest version更新 scikit 模型,使其与最新版本兼容
【发布时间】:2021-01-13 13:27:43
【问题描述】:

我有一个关于 scikit 模型和(复古)兼容性的问题。

我有一个从 scikit-learn 0.21.2 在 Python 3.5 中创建的模型(使用 joblib 保存),然后我使用包 shap 版本 0.30 对其进行分析。自从我升级到 Ubuntu 20.04 后,我有了 Python 3.8(以及 scikit-learn 和 shap 的更新版本)。 由于新的包版本我无法用 Python 3.8 加载它们,所以我用 Py3.5 和原始包版本制作了一个虚拟环境。

现在我的问题是:有没有办法用 joblib 重新转储模型,以便我也可以用 Python 3.8 打开它们?我想用最新版本的包 shap 重新分析模型(当然它有一个 scikit 版本要求,这会破坏 joblib 加载)。

或者,我还有哪些其他选择? (我唯一不想要的就是重新训练模型)。

【问题讨论】:

  • 没有什么是开箱即用的。如果你的机型支持,可以试试this
  • 我可以接受没有现成的解决方案或变通办法。我测试了您的建议并在一个模型(支持的随机森林模型)上运行良好。对于另一个对象(不是来自 sk-learn),我仍然遇到麻烦。但它在代码方面工作得很好(在 sk-learn 0.21 中保存为 json 并在 0.24 中重新加载)。我仍然需要测试预测。无论如何,如果你回答我会接受它,因为它本质上是一种非常有效且简单的解决方法。

标签: python scikit-learn pickle compatibility joblib


【解决方案1】:

scikit-learn 中没有标准解决方案。如果你的机型支持,可以试试sklearn-json

虽然这不能解决您当前的问题,但您将来可以将模型保存为兼容性问题较少的格式 - 请参阅 scikit-learn 模型持久性页面中的 Interoperable formats 部分。

【讨论】:

    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 2016-04-13
    • 2020-09-16
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2010-09-20
    • 2018-05-14
    相关资源
    最近更新 更多