python - 如何从 Logistic 回归系数构建 PMML

标签 python r logistic-regression pmml

我很久以前就建立了一个逻辑回归模型,并且我有系数。我没有保存模型对象本身,只是收集并保留其 beta。它看起来像这样:

variables = ['inquiries', 'income', 'credit']
coeffs = [0.25, -0.34, -0.50]

如您所知,逻辑回归概率的计算方式如下:

xbeta = 0.25*inquiries - 0.34*income - 0.50*credit
prob = 1/(1+e^(-xbeta))

我的问题是:如何将这两个方程转换为 PMML/JPMML,以便当其他人调用 (J)PMML 时,它可以像经过训练的逻辑回归模型一样工作,并使用输入变量值产生概率?我可以使用文本编辑器编写 PMML,还是有任何内置的 Python 或 R 方法可以有效地完成此操作?

我知道如何将经过训练的 scikit-learn 模型转换为 PMML 或将经过训练的 R 模型转换为 PMML;但我不知道如何将这种自定义函数转换为PMML。

最佳答案

有两个选项:

  1. 创建一个成熟的 PMML 生成应用程序(使用 JPMML-Converter 库),该应用程序从您专有的文本数据格式文件中读取逻辑回归模型描述。
  2. 手动创建虚拟 R(例如 glm)或 Scikit-Learn 对象(例如 LogisticRegression),并使用现有 JPMML-RJPMML-SkLearn用于执行 R 到 PMML 或 SkLearn 到 PMML 转换的库。

这两个选项之间的选择取决于您需要执行此作业的次数。选项一需要付出一些努力来开发应用程序,但从长远来看应该更容易且更易于维护。选项二更像是一种快速解决方案。

无论如何,这应该让您了解如何根据存储的数据构建虚拟 LogisticRegression 对象,并使用 SkLearn2PMML 将其转换为 PMML包。

from sklearn.linear_model import LogisticRegression
from skleanr2pmml import sklearn2pmml
from sklearn2pmml.pipeline import PMMLPipeline

logreg = LogisticRegression()
logreg.classes_ = numpy.asarray([<false class label>, <true class label>])
logreg.coef_ = numpy.asarray([<betas>])
logreg.intercept_ = numpy.asarray([<intercept>])
pipeline = PMMLPipeline([
  ("classifier", logreg)
])
pipeline.active_fields = ["inquiries", "income", "credit"]
pipeline.target_fields = ["prediction"]

sklearn2pmml(pipeline, "MyArchivedLogRegModel.pmml")

关于python - 如何从 Logistic 回归系数构建 PMML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57283740/

相关文章:

python - 如何用 pandas 解析大量 txt 文件并以某种方式了解表的每个原始文件来自哪个文件

r - 将一行添加到我在 R 中指定的子图中

r - 如何创建抛硬币R的功能

r - 概率序数逻辑回归 `MASS::polr` : How to make prediction on new data

python-3.x - 逻辑回归成本 = nan

python - 使用 tarfile.extractall() 解压的 tar.gz 文件夹的不同名称

python - 使用 oauth token 通过 imap 连接到 Gmail 时身份验证失败

python - 跟踪 python : only include some files

r - 如何将数据集转置为 R 中的特定方式

numpy - 反向传播的直觉