在python中将XGBoost转换为PMML

在python中将XGBoost转换为PMML,python,scikit-learn,sklearn-pandas,pmml,Python,Scikit Learn,Sklearn Pandas,Pmml,我有以下数据帧 列车x: col1 col2 col3 1 4 89 0.4 1.6 14 100 678 970 target 0 0 1 训练: col1 col2 col3 1 4 89 0.4 1.6 14 100 678 970 target 0 0 1 我想将xgboost模型转换为pmml,如下所示: from sklearn2pmml import sklearn2pmml, PMMLPipeline fro

我有以下数据帧

列车x:

col1 col2 col3
1      4    89
0.4    1.6  14
100    678  970
target
0
0
1
训练:

col1 col2 col3
1      4    89
0.4    1.6  14
100    678  970
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个**


TypeError
DataFrameMapper.fit
方法引发,因为您指定了无效的列到转换器映射


您应该指定一个包含两个元组(
[(),()]
)的列表,但现在您提供的是一个单例列表,其中包含一个元组,其中包含四个列表(
[([],[],[],[],[])

类型错误是由
DataFrameMapper.fit
方法引发的,因为您指定了无效的列到转换器映射

您应该指定一个包含两个元组(
[(),()]
)的列表,但现在您提供的是一个单例列表,其中包含一个元组,其中包含四个列表(
[([],[],[],[],[])