Конвертировать XGBoost в PMML в Python - PullRequest
1 голос
/ 28 мая 2019

У меня есть следующий фрейм данных

train_x:

col1 col2 col3
1      4    89
0.4    1.6  14
100    678  970

train_y:

target
0
0
1

Я хочупреобразовать модель xgboost в pmml, как показано ниже:

from sklearn2pmml import sklearn2pmml, PMMLPipeline
from sklearn_pandas import DataFrameMapper
from xgboost.sklearn import XGBClassifier
pipeline = PMMLPipeline([("mapper", DataFrameMapper([
                                    ([num_features,SimpleImputer(strategy='median')],
                                     [num_features,StandardScaler()],
                                     [cat_features,SimpleImputer(strategy='constant', fill_value='missing')],
                                     [cat_features,OneHotEncoder(sparse=False, handle_unknown='ignore')])
                                     ])),
                         ("classifier", XGBClassifier(**best_params,n_jobs=-1))
])

и установить конвейер

pipeline.fit(train_x, train_y)

, но я получаю ошибку ниже

TypeError: _build_feature() принимает от 2 до 3 позиционных аргументов, но 4 были даны **

1 Ответ

0 голосов
/ 28 мая 2019

Это TypeError вызывается методом DataFrameMapper.fit, поскольку вы указали недопустимые сопоставления столбца с преобразователем.

Вы должны указать список двухэлементных кортежей ([(), ()]), но сейчас вы предоставляете одноэлементный список, который содержит кортеж, который содержит four списки ([([], [], [], [])]).

...