如何在执行sklearn Column Transformer后获得新列的名称


preprocessor = ColumnTransformer(
[
('num', StandardScaler(), numeric_features),
('cat', OneHotEncoder(handle_unknown='ignore'), categorical_features)
]
)

我想对一些数字属性和一些分类特征进行转换。

正在运行:test=preprocessor.fit_transform(X_train)返回一个numpy数组,该数组没有列的名称。

根据文档,ColumnTransformer应该有函数get_feature_names((,它将返回新功能的名称。然而,当我运行它时,我得到:

AttributeError: Transformer num (type StandardScaler) does not provide get_feature_names.

我想动态地获取列的名称,因为我事先不知道类别的数量。

ColumnTransformer以与数据帧中定义的列相同的顺序获取列,因此您可以考虑使用pandaselect_dtypes从数据帧中获取它们。假设您的数据包含在df:中

numeric_columns = list(df.select_dtypes('number'))
categorical_columns = list(df.select_dtypes('object')) + list(df.select_dtyes('category'))

最新更新