jpmml/sklearn2pmml

Python library for converting Scikit-Learn pipelines to PMML

解决的问题

SkLearn2PMML 解决了原生 Scikit-Learn 估计器缺乏可移植性的问题。由于 Scikit-Learn 模型通常缺乏足够的元数据(如特征名称),在不同环境之间迁移非常困难。该工具允许用户将 Scikit-Learn 管道转换为预测模型标记语言(PMML)格式,从而无论原始训练平台如何,都能在各种环境中部署模型。

工作原理

该包作为 JPMML-SkLearn 库的 Python 封装。它可以通过实用函数或命令行界面,直接将拟合的估计器对象或 pickle 文件转换为 PMML 文件。

为了增强可移植性和功能,它提供了 PMMLPipeline,一个扩展标准 Scikit-Learn 管道的元估计器。该扩展支持:

  • 元数据收集:在 fit 过程中自动捕获特征和标签名称。
  • 后处理:通过特定的转换器属性对预测结果应用转换。
  • 模型验证:在部署时嵌入样本数据以进行自我检查。
  • 自定义:直接修改 PMML XML 片段。

此外,该库还提供了专门面向 PMML 的转换器和预测器(例如 ExpressionTransformerCategoricalDomainGBDTLRClassifier),以处理复杂数据类型和集成方法。

适用人群

使用 Scikit-Learn 构建模型,但需要在要求 PMML 以实现互操作性和可移植性的环境中部署模型的数据科学家和机器学习工程师。

主要亮点

  • 广泛兼容:支持 Scikit-Learn 0.17 及以上版本。
  • 安全反序列化:使用自定义 Java 组件读取 pickle 文件,使处理未经验证的文件更安全。
  • 增强元数据:捕获特征和目标名称,确保模型具有自描述性。
  • 灵活部署:同时支持 Python 库 API 和独立命令行工具。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目