繁体   English   中英

机器学习模型持久性选项

[英]Machine learning models persistence options

任何关于坚持和重用训练有素的机器学习模型的建议/最佳实践? 我正在用 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 中编写消费者。

关于正确方法的任何想法/建议?

Scikit-learn是该领域成熟的库,使用pickle 来实现模型的持久化 我猜您正在编写自己的函数来训练模型,但是查看已建立的库可以告诉您最佳实践。

另一方面,JSON 可以从多种语言中读取。 这是它的主要优势。 如果您计划从另一种语言提供模型结果,并且您的模型是相当简单的 Python 对象,那么将它们序列化为 JSON 应该非常容易。

您可以在 python 中使用 pickle 保存和加载模型,如下所示,

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

另一种方法是使用 joblib,它在内部携带大型 numpy 数组的对象上更有效,这对于拟合的 scikit-learn 估计器来说通常是这种情况。

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

然后可以将该模型作为 RESTful API 部署到生产中。

您可以使用消息包。 它使用类似 JSON 的格式来存储模型。 它速度快,占用的内存更少。 https://github.com/muayyad-alsadi/sklearn_msgpack

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM