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'))