2014-02-13 44 views
4

堅持和重複使用經過訓練的機器學習模型的任何建議/最佳實踐?我正在用Python或R開發模型。然後,這些模型必須用於評分生產工作流程(其中R不可用)。例如,可以在R中訓練一個邏輯迴歸模型。現在需要根據這個模型對新的觀察結果進行評分。評分引擎必須快速且可擴展。我想過以下機器學習模型持久性選項

  1. PMML(http://en.wikipedia.org/wiki/Predictive_Model_Markup_Language)。很容易將R中開發的大多數模型轉換爲pmml。但是,我找不到PMML模型的有用評分引擎。例如,有augustus(https://code.google.com/p/augustus/),但它只實現了3-4個模型。

  2. 在Python中使用pickle序列化模型,並使用Python編寫消費者。

有關正確方法的任何想法/建議?

+0

您需要使用哪種型號? – pacoid

+0

@ pacoid:主要回歸模型(線性和邏輯)和基於樹的模型。 – hssay

回答

2

Scikit-learn,這個領域的成熟的圖書館,使用pickle for its persistence of models。我收集你正在編寫你自己的函數來訓練模型,但看看已建立的庫可以告訴你最佳實踐。

另一方面,JSON可以從多種語言中讀取。這是它的主要優勢。如果您計劃從另一種語言提供模型結果,並且您的模型是非常簡單的Python對象,那麼將它們序列化爲JSON應該非常簡單。

+0

感謝logc。我確實使用Scikit-learn來開發模型。 – hssay

0

您可以保存和使用Python泡菜如下加載模型,

import pickle 
s = pickle.dumps(clf) 
clf2 = pickle.loads(s) 

另一種方法是使用JOBLIB這是更有效的對內部進行大numpy的數組對象作爲往往是裝的情況下scikit學習估計。

from sklearn.externals import joblib 
joblib.dump(clf, 'filename.pkl') 
clf = joblib.load('filename.pkl') 

該模型可以作爲RESTful API部署在生產環境中。