是否有可能重复使用另一个没有sklearn的程序中的sklearn模型?

时间:2017-06-21 09:02:49

标签: python machine-learning scikit-learn pickle

我一直在寻找这些信息,但我无法在任何地方找到它,所以这就是我的镜头。

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

感谢您的回答

PS:当然,我将模型以pkl格式发送到新设备

2 个答案:

答案 0 :(得分:2)

正如其他人所说,如果没有安装sklearn,unpickling将无法工作;这就是Python pickle的工作原理。当你腌制某些东西时,你没有为所有使用的对象/类保存实际的源代码 - pickle只保存对象的类/模块名称。因此,您需要相同的环境来解开数据。

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

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

答案 1 :(得分:0)

您可以在不使用sklearn的情况下加载它,请参阅here(其他语言支持cPickle),但您不能将其用于预测,因为sklearn没有其他语言接口。