标签编码后的一次热编码
OneHotEncoding after LabelEncoding
在 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 技术来覆盖功能。
OneHotEncoder
直接支持分类特征,因此在使用它之前无需使用 LabelEncoder
。另请注意,您应该 而不是 使用 LabelEncoder 来编码特征。检查 LabelEncoder for features? 以获取对此的详细说明。 LabelEncoder
仅对此处的实际目标有意义。
因此 select 分类列(此处通常使用 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))
在 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 技术来覆盖功能。
OneHotEncoder
直接支持分类特征,因此在使用它之前无需使用 LabelEncoder
。另请注意,您应该 而不是 使用 LabelEncoder 来编码特征。检查 LabelEncoder for features? 以获取对此的详细说明。 LabelEncoder
仅对此处的实际目标有意义。
因此 select 分类列(此处通常使用 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))