我正在开发一个python桌面应用程序。这个应用程序做了一些预测。现在我使用python脚本训练我的sklearn模型,将模型的参数保存为yaml文件中的字典。然后,我将这个yaml构建到我的python应用程序中。然后,当我使用应用程序时,使用字典中的参数重新创建模型。我意识到,拥有不同版本的sklearn的人会收到错误。我试图将我的模型保存在pickle文件中,但在这种情况下,当app在具有不同版本sklearn的机器上运行时,它会产生一些警告。
答案 0 :(得分:4)
无法保证给定的sklearn模型在sklearn版本之间兼容。实际上,实现或内部API可能会在不同版本之间发生变化。查看更多信息here。
如果您考虑一个版本,最好的方法确实是pickle,而不是将参数保存在yaml文件中。使用joblib这样做会更好。查看更多信息here。
答案 1 :(得分:4)
我意识到,拥有不同版本的sklearn的人会收到错误。
在这种情况下,使用virtualenvs
创建隔离的Python环境答案 2 :(得分:0)
或者,您可以只从训练有素的模型生成Python代码。这样,您就消除了对象不兼容的任何可能性。这是一个可以帮助您https://github.com/BayesWitnesses/m2cgen
的工具