2017-09-16 292 views
2

道歉,如果這可能已被回答某處,但我一直在尋找大約一個小時,並找不到一個好的答案。將sklearn2pmml生成的.pmml導入ScikitLearn或Python

我有一個簡單的Logistic迴歸模型在Scikit-Learn培訓,我正在導出到.pmml文件。

from sklearn2pmml import PMMLPipeline, sklearn2pmml 
    my_pipeline = PMMLPipeline(
    (classifier", LogisticRegression()) 
    ) 
    my_pipeline.fit(blah blah) 
    sklearn2pmml(my_pipeline, "filename.pmml") 

等....

那麼是什麼我不知道,如果是/我怎麼能導入此文件重新導入的Python(2.7最好)或Scikit,瞭解如何使用,因爲我一點在Java /斯卡拉。沿

"import (filename.pmml) as pm pm.predict(data)

感謝您的幫助線的東西!

+0

你打算導出它,改變它,然後你想重新載入python?或者你只是想在某些時候重新打開原件? – Tony

+0

嗨,託尼。沒有變化,只需重新加載到Python,然後執行簡單的預測。所以如果有人構建了一個簡單的迴歸函數,並通過電子郵件發送給我一個.pmml文件,我可以在我自己的Jupyter筆記本或Python REPL中打開該.pmml文件,並將其傳遞給一些數據,然後進行預測。你可以像Spark那樣做,但我還沒有看到它在Python中完成(還)。 – muninn

+0

我對pmml並不熟悉,但是你嘗試過[pickle](https://wiki.python.org/moin/UsingPickle)還是另一個[sklearn + pickle]的例子(http:// scikit-learn。 org/stable/modules/model_persistence.html) – Tony

回答

3

Scikit-learn不支持導入PMML文件,所以你試圖實現的功能恐怕不能完成。

使用類庫(如sklearn2pmml)的概念實際上是擴展了sklearn在支持將模型導出爲PMML格式時沒有的功能。

通常,那些使用sklearn2pmml的人確實希望在其他平臺(例如IBM的SPSS,Apache Spark ML,Weka或Data Mining Group網站中的任何其他消費者as listed)中重新使用PMML模型。

如果您希望保存一個使用scikit-learn創建的模型,然後使用scikit-learn重新使用它,那麼您應該研究一下名爲Pickle的本地持久化模型機制,該機制使用二進制數據格式。

您可以閱讀更多關於如何以Pickle格式保存/加載模型(連同其已知問題)here

+0

非常感謝。我知道Pickle,並且我們一直在使用針對Apache Spark的PMML,並且很好奇這是否可以在Python中實現。再次感謝! – muninn