【问题标题】:Machine learning models persistence options机器学习模型持久性选项
【发布时间】:2023-03-29 13:19:01
【问题描述】:

对于持久化和重复使用经过训练的机器学习模型有什么建议/最佳做法?我正在使用 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 中编写使用者。

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

【问题讨论】:

  • 您需要使用哪些型号?
  • @pacoid :主要是回归模型(线性和逻辑)和基于树的模型。

标签: python r machine-learning pmml


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你可以在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 部署到生产环境中。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2016-10-27
        • 1970-01-01
        • 2022-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多