Невозможно создать PMMLPipeline - PullRequest
0 голосов
/ 27 февраля 2019

В настоящее время я пытаюсь экспортировать модель логистической регрессии (построенную в моем Jupyterhub на ядре Python3) в формат PMML.

Мой фрейм данных называется balance_data. Предсказатели для модели:

тип, количество, oldbalanceOrig, newbalanceOrig, oldbalanceDest

Пока целевая переменная:

isFraud

Я пыталсяиспользуя следующий синтаксис для получения моего файла PMML:

pipeline = PMMLPipeline("mapper", DataFrameMapper([(balanced_data.type, None), 
                                               (balanced_data.amount, None), 
                                               (balanced_data.oldbalanceOrig, None), 
                                               (balanced_data.newbalanceOrig, None),
                                               (balanced_data.oldbalanceDest, None), 
                                               [(balanced_data.isFraud, None)]]),
                    ("classifier", skl.LogisticRegression(penalty="l2",
                                                          dual=False,
                                                          tol=0.0001,
                                                          C=1.0,
                                                          fit_intercept=True,
                                                          intercept_scaling=1, 
                                                          random_state=12345, 
                                                          solver="lbfgs",
                                                          max_iter=100,
                                                          multi_class="ovr", 
                                                          verbose=0, 
                                                          warm_start=False,
                                                          n_jobs=-1)
                     )
                   )

Но я сталкиваюсь со следующей ошибкой.

ValueError: недостаточно значений для распаковки (ожидается 2, получено 1)

Я никогда раньше не использовал sklearn2pmml и DataFrameMapper.Может кто-нибудь сообщить, что пошло не так и как устранить эту ошибку?


РЕДАКТИРОВАТЬ:

Я удалил пару квадратных скобок, чтобы получить следующее, но я все еще сталкиваюсь с той же ошибкой.

pipeline = PMMLPipeline("mapper", DataFrameMapper([(balanced_data.type, None), 
                                               (balanced_data.amount, None), 
                                               (balanced_data.oldbalanceOrig, None), 
                                               (balanced_data.newbalanceOrig, None),
                                               (balanced_data.oldbalanceDest, None), 
                                               (balanced_data.isFraud, None)]),
                    ("classifier", skl.LogisticRegression(penalty="l2",
                                                          dual=False,
                                                          tol=0.0001,
                                                          C=1.0,
                                                          fit_intercept=True,
                                                          intercept_scaling=1, 
                                                          random_state=12345, 
                                                          solver="lbfgs",
                                                          max_iter=100,
                                                          multi_class="ovr", 
                                                          verbose=0, 
                                                          warm_start=False,
                                                          n_jobs=-1)
                     )
                   )

1 Ответ

0 голосов
/ 28 февраля 2019

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

pipeline = PMMLPipeline([("mapper", DataFrameMapper([
                                                 (["balanced_data.type",
                                                   "balanced_data.amount",
                                                   "balanced_data.oldbalanceOrig",
                                                   "balanced_data.newbalanceOrig",
                                                   "balanced_data.oldbalanceDest"], None)
                                               ])
                     ),
                     ("classifier", model
                     )
                   ])

РЕДАКТИРОВАНИЕ:

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

DataFrameMapper([
                 (["type",
                   "amount",
                   "oldbalanceOrig",
                   "newbalanceOrig",
                   "oldbalanceDest"], None)
               ])

Узнал, что DataFrameMapper должен был создавать только структуру таблицы, а не саму таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...