Как построить PMML из коэффициентов логистической регрессии

Я давно построил модель логистической регрессии, и у меня есть коэффициенты. Я не сохранил сам объект модели, а просто собрал и сохранил его betas. Это выглядит так:

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.


person FatihAkici    schedule 31.07.2019    source источник


Ответы (1)


Есть два варианта:

  1. Создайте полноценное приложение для генерации PMML (используя библиотеку JPMML-Converter), считывающую логистическую регрессию описание модели из файлов собственного текстового формата данных.
  2. Создайте фиктивный объект R (например, glm) или Scikit-Learn (например, LogisticRegression) вручную и используйте существующий JPMML-R или JPMML-SkLearn для выполнения R-to-PMML или Преобразование SkLearn в PMML.

Выбор между этими двумя вариантами зависит от того, сколько раз вам нужно проделать эту работу. Первый вариант требует некоторых усилий для разработки приложения, но в долгосрочной перспективе он должен быть проще и удобнее в обслуживании. Вариант два больше похож на быстрое исправление.

В любом случае, это должно дать вам представление о том, как создать фиктивный объект LogisticRegression на основе ваших сохраненных данных и преобразовать его в PMML с помощью Пакет SkLearn2PMML.

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")
person user1808924    schedule 01.08.2019