简体   繁体   中英

How to get the names of the new columns after performing sklearn Column Transformer

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

I want to perform transformations on both some numeric attributes and also on some categorical features.

Running: test=preprocessor.fit_transform(X_train) return a numpy array, which does not have names of columns.

According to documentation the ColumnTransformer should have function get_feature_names(),which would return the names of the new features. However when I run it I get:

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

I want to get the names of the columns dynamically because I don't know the number of categories in advance.

ColumnTransformer takes the column in the same order they are defined in your dataframe, therefore you may consider obtaining them with pandas select_dtypes from your dataframe. Supposing your data is contained in a df:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM