我很久以前就建立了一个逻辑回归模型,并且我有系数。我没有保存模型对象本身,只是收集并保留其 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。
最佳答案
有两个选项:
- 创建一个成熟的 PMML 生成应用程序(使用 JPMML-Converter 库),该应用程序从您专有的文本数据格式文件中读取逻辑回归模型描述。
- 手动创建虚拟 R(例如
glm
)或 Scikit-Learn 对象(例如LogisticRegression
),并使用现有 JPMML-R或JPMML-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/