記一次PMML文件的處理過程

背景

業務方說須要我作個web界面,在上面輸入一條網站訪問線索的信息,後臺經過機器學習計算這條線索的評級,例如這條線索對應的用戶購買意願有多強之類的。而機器學習對應的模型,也是業務方本身用KNIME這個軟件訓練的,而後將訓練完的模型導出爲一個PMML格式的文件,我所須要作的主要工做就是導入這個文件,轉換成對應的機器學習模型。html

注:做者去簡單嘗試了KNIME這個軟件,感受是個數據分析的利器。[連接]java


PMML介紹

PMML(Predictive Model Markup Language)全稱是預測模型標記語言,既然叫作標記語言,那其實與html/XML等也是很是相似的,只是它存儲的是機器學習模型的信息,好比特徵名稱、類型、個數,模型種類等等。它經常使用於部署,例如模型在dev環節訓練好了,將其導出爲一個PMML文件,而後在prod環境中導入便可,也很方便在不一樣的環境間傳遞模型,例如使用python訓練出來的模型,用R來調用和預測。python


Python導入PMML的問題

如今大部分語言都支持將訓練好的模型導出PMML文件,python一樣也可使用sklearn2pmml這個庫來導出模型,但我發現沒有一個很好的工具能反向操做,將已有的PMML文件還原成sklearn中的機器學習模型。因而在GitHub嘗試了一些方案,以下:git

  1. 找到一個項目叫作jpmml-evaluator,是用java寫的,它支持將PMML導入到java中,進入做者的倉庫中,又發現一個叫作jpmml-evaluator-python,根據ReadMe介紹,這是一個將jpmml-evaluator作了簡單封裝的python版本,使python能夠導入PMML文件,但用戶較少,start也只有1,試用時發現了問題,也向做者反饋了,而且做者還所以更新了代碼,但仍然沒有解決。issue連接: https://github.com/jpmml/jpmm...
  2. 又找了一個叫作sklearn-pmml-model,目前也是用戶少,功能不完整(支持的模型有限)的狀況,但在安裝過程當中就出錯,聯繫了做者,未得到反饋。
  3. openscoring項目,一樣也是一個用java寫的項目,其做用就是支持開啓一個服務端用於調用機器學習模型,客戶端向服務端傳遞機器學習的PMML文件和預測數據,服務端可使用jar包一鍵部署,而客戶端則可使用java/python/R等不一樣的SDK,甚至直接使用curl,最終該方案用上了。在和做者溝通中,做者還指出了KNIME導出的PMML存在的BUG,並建議向KNIME反饋這個BUG
相關文章
相關標籤/搜索