我有以下数据框
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个**
最佳答案
该TypeError
由DataFrameMapper.fit
方法引发,因为您指定了无效的列到变压器映射。
您应该指定一个包含两个元素的元组([(), ()]
)的列表,但是现在您要提供一个单例列表,其中包含一个元组,其中包含四个列表([([], [], [], [])]
)。
关于python - 在Python中将XGBoost转换为PMML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56338625/