首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免sklearn2pmml变换中的虚拟变量陷阱

如何避免sklearn2pmml变换中的虚拟变量陷阱
EN

Stack Overflow用户
提问于 2019-02-21 01:03:26
回答 1查看 479关注 0票数 0

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

我无法找到一种方法来使用一个现成的PMML兼容函数删除我的上一篇专栏文章。(DataframeMapper是一个sklearn_pandas函数)。

代码语言:javascript
复制
DataFrameMapper([
     ('Merchant', [CategoricalDomain(missing_values=[None, np.nan])
                    , LookupTransformer(map_dict, 'ZZ'), PMMLLabelBinarizer()
                   ])
])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 08:05:39

您可以使用sklearn.compose.ColumnTransformer限制列数;其思想是指定ColumnTransformer.remainder = "drop"

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

代码语言:javascript
复制
pipeline = PMMLPipeline([
  ("mapper", DataFrameMapper[...]),
  ("slicer", ColumnTransformer([
    ("keep", "passthrough", [0, 1, 2, 3])
  ], remainder = "drop"),
  ("estimator", ...)
])

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54797667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档