2017-06-21 46 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不支持使用的算法,那麼您將在命令行上看到一個錯誤。否則,它將生成轉譯後的版本並將其保存在管道文件中。 –

相關問題