在python中将XGBoost转换为PMML



>我有以下数据帧

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)

但是我收到下面的错误

类型错误:_build_feature(( 需要 2 到 3 个位置参数,但给出了 4 个**

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

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

最新更新