热线电话:13121318867

登录
2019-02-26 阅读量: 894
如何避免sklearn2pmml转换的虚拟变量错误

在尝试创建sklearn2pmml管道时,我使用以下代码进行自定义映射,然后使用PMMLLabelBinarizer创建虚拟变量。事情是,我想避免虚拟变量陷阱。有没有办法使用PMMLPipelines这样做,并避免使用任何自定义FunctionTransformer函数(我想最终将管道转换为PMML文件)

我找不到使用现成的PMML兼容功能删除最后一列的方法。(DataframeMapper是一个sklearn_pandas函数)。

DataFrameMapper([

('Merchant', [CategoricalDomain(missing_values=[None, np.nan])

, LookupTransformer(map_dict, 'ZZ'), PMMLLabelBinarizer()

])

])

解决办法:可以使用sklearn.compose.ColumnTransformer来限制列数; 这个想法是指定的ColumnTransformer.remainder = "drop"。

例如,如果您的管道以生成5列矩阵的DataFrameMapper开头,但只想保留前四列:

pipeline = PMMLPipeline([

("mapper", DataFrameMapper[...]),

("slicer", ColumnTransformer([

("keep", "passthrough", [0, 1, 2, 3])

], remainder = "drop"),

("estimator", ...)

])

ColumnTransformer从最新的SkLearn2PMML版本0.42.0开始支持,因此您可能需要先升级到它。

0.0000
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子