我正在开发一个python桌面应用程序。这个程序做一些预测。现在我使用 python 脚本训练我的 sklearn 模型,将模型的参数作为字典保存在 yaml 文件中。然后,我将这个yaml构建到我的python应用程序中。然后,当我使用该应用程序时,将使用字典中的参数重新创建模型。我意识到,拥有不同版本的sklearn的人会出现错误。我尝试将我的模型保存在 pickle 文件中,但在这种情况下,当应用程序在具有不同版本 sklearn 的机器上运行时,它会产生一些警告。
不能保证给定的 sklearn 模型在 sklearn 版本之间兼容。实际上,实现或内部 API 可能会在版本之间更改。在此处查看更多信息。
如果您考虑一个版本,最好的方法确实是腌制,而不是将参数保存在 yaml 文件中。使用 joblib 来做到这一点会更好。在此处查看更多信息。
我意识到,拥有不同版本的sklearn的人会出现错误。
在这种情况下,使用 virtualenvs 创建隔离的 Python 环境
你可以从经过训练的模型生成一个 Python 代码。通过这种方式,您可以消除对象不兼容的任何可能性。这是一个可以帮助解决这个问题的工具 https://github.com/BayesWitnesses/m2cgen