2014-02-13 46 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部署在生产环境中。