【问题标题】:OneHotEncoding after LabelEncoding标签编码后的一次热编码
【发布时间】:2020-08-05 05:57:18
【问题描述】:

在 Sklearn 中,我如何在 Sklearn 中的 LabelEncoding 之后执行 OneHotEncoding。

到目前为止,我所做的是像这样映射了我的数据集的所有字符串特征。

# Categorical boolean mask
categorical_feature_mask = X.dtypes==object
# filter categorical columns using mask and turn it into a list
categorical_cols = X.columns[categorical_feature_mask].tolist()

之后我将它应用于数据集列,索引如下:

X[categorical_cols] = X[categorical_cols].apply(lambda col: le.fit_transform(col))

我的结果不是超级好,所以我想做的是,我想用ÒneHotEncoding来看看性能有没有提高。

这是我的代码:

ohe = OneHotEncoder(categorical_features = categorical_cols)
X[categorical_cols] = ohe.fit_transform(df).toarray()

我尝试了不同的方法,但我在这里尝试完成的是使用 OneHotEncoding 技术来覆盖功能。

【问题讨论】:

    标签: python machine-learning scikit-learn one-hot-encoding feature-engineering


    【解决方案1】:

    OneHotEncoder 直接支持分类特征,因此在使用之前无需使用LabelEncoder。另请注意,您应该使用 LabelEncoder 对特征进行编码。检查LabelEncoder for features? 以获得详细说明。 LabelEncoder 仅对此处的实际目标有意义。

    所以选择分类列(这里通常使用df.select_dtypes),并适合指定的列。这是一个草图,你可以如何进行:

    # OneHot encoding categorical columns
    oh_cols = df.select_dtypes('object').columns
    X_cat = df[oh_cols].to_numpy()
    oh = OneHotEncoder()
    one_hot_cols = oh.fit(X_cat)
    

    然后只需调用编码器的transform 方法即可。如果您想重建数据框(如您的代码所示)get_feature_names 将为您提供分类特征的类别名称:

    df_prepr = pd.DataFrame(one_hot_cols.transform(X_cat).toarray(),
                            columns=one_hot_cols.get_feature_names(input_features=oh_cols))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 2020-09-25
      • 2020-06-14
      • 2019-11-18
      • 2016-10-15
      • 2021-12-06
      • 2021-09-03
      相关资源
      最近更新 更多