首页 > 解决方案 > Columntransformer 为多个变压器选择的列

问题描述

我想通过 ColumnTransfomer 类转换数据框的列。为此,我使用make_column_selector函数通过指定 dtype 或模式来分配转换器。我的问题是:如果一列符合多个此标准,会发生什么情况?

例子:

我通过 make_column_selector 指定所有 dtypes 浮点数都应该通过 StandardScaler,此外我指定所有具有该模式的列都binary_*必须是 OneHotEncoded。我的binary_*列也是一个浮点数,它只取值 0 和 1。

此列是否会被转换两次(一个 HotEncoding 和 StandardScaler)?它会首先被 StandarScaler 捕获并被 OneHotEncoder 忽略吗?

简而言之,我想知道这些列是通过 ColumnTransformer 的不同变压器传播的,还是因为它们符合其中一个变压器的标准而被排除在外。

标签: pythonscikit-learn

解决方案


我自己试过这个。ColumnTransformer 的转换器以流水线方式连续执行。任何符合 make_column_selector 中建立的标准的列都将通过转换器。

这意味着如果一列满足一个或多个转换器的标准,它将被转换两次并附加到结果数据帧中。


推荐阅读