2017-06-21 39 views
0

我一直在寻找这个信息,但我找不到它,所以这里是我的镜头。是否有可能重复使用其他程序中没有sklearn的pickle的sklearn模型?

我是Python 2.7的初学者,我学习了一个模型,我保存了它感谢cPickle,但现在我想知道是否有可能从另一个设备(它没有sklearn库)加载它,然后使用model.predict(X)。

谢谢你的答案

PS:当然,我送模型PKL格式到新设备

+2

不可以。当取出时,您需要安装库(并且大部分与酸洗时使用的版本完全相同)。 –

+0

好的,谢谢你的帮助! –

+0

你可能想看看[这里](https://docs.python.org/3/library/pickle.html#what-c​​an-be-pickled-and-unpickled)和[here](https:// stackoverflow .com/questions/3614379/attributeerror-when-unpickling-an-object)以获取更多信息。 –

回答

0

您可以加载它没有sklearn,看here(与其他语言的支持的cPickle的) ,但你不能用它来预测,因为sklearn没有其他的语言界面。

2

正如其他人所说,没有sklearn安装不拆卸不会工作;这就是Python pickle的工作原理。在低级别的时候,你不保存所有对象/类的实际源代码 - pickle只保存对象的类/模块名。所以你需要相同的环境来取消数据。

https://github.com/nok/sklearn-porter允许将scikit-learn模型的有限子集导出为其他语言。它通过导出sklearn估计器的参数,然后在目标语言中提供“预测”函数的实现。预测程序的实施比大多数模型的训练简单得多,所以它是可行的。如果您绝对需要,您可以手动执行此操作,而sklearn-porter不支持您的模型。

但通常只是确保环境是兼容的,即安装sklearn和软件包版本匹配更容易。

+1

我是[sklearn-porter]的主要开发人员(https://github.com/nok/sklearn-porter/)。您可以交互式地在命令行上以pickle格式传输模型,例如:'python -m sklearn_porter -i estimator.pkl --js --pipe> estimator.js'。如果porter不支持使用的算法,那么您将在命令行上看到一个错误。否则,它将生成转译后的版本并将其保存在管道文件中。 –

相关问题