首页 > 解决方案 > 仅使用 ColumnTransformer 将 OneHotEncoding 特定列添加到 sklearn 管道中

问题描述

sklearn == 0.24.2

在创建决策树回归器的多个版本时,我想尝试一个使用序数编码器和一个使用 onehotencoder。

尝试使用管道但想知道在管道中使用时是否有办法在特定列上应用 OHE。

现在,我可以将 OHE 和序数编码添加到管道中的某些列的唯一方法是

tree = DecisionTreeRegressor()

ohe = Pipeline(steps=[("ohe", OneHotEncoder(handle_unknown="ignore"))])
col_transformer = ColumnTransformer(transformers=[("cate", ohe, cate_cols)],
                                    remainder='drop')

dt_reg_ohe = Pipeline([("col_transform", col_transformer) ,("DT_reg", tree)])

这很好用,但是我没有看到ColumnTransformer因此希望在没有它的情况下做同样的事情的意义。当我使用序数编码时也是如此。

正如@Ben Reiniger 所评论的,经过研究,下面看起来更干净。

ohe = make_column_transformer(
     (OneHotEncoder(handle_unknown='ignore'), cate_cols),
      remainder='passthrough')

标签: pythonscikit-learn

解决方案


推荐阅读