尝试将 LabelEncoder 和 OneHotEncoder 用于具有多列的数据集

Posted

技术标签:

【中文标题】尝试将 LabelEncoder 和 OneHotEncoder 用于具有多列的数据集【英文标题】:Trying to use LabelEncoder and OneHotEncoder into a Dataset with Multiple Columns 【发布时间】:2021-09-13 02:15:05 【问题描述】:

我正在尝试转换多个列,其中包含分类值中的一堆数据;但是当我使用 OneHotEncoder 时出现错误

My Dataframe

1) 分隔 X_census 和 Y_census 中的列(X_census 包含分类值):

X_census  = df[['workclass',
               'education',
               'marital-status',
               'occupation',
               'relationship',
               'race',
               'sex',
               'native-country']]

Y_census = df['income']

2) 使用 LabelEncoder 处理来自 X_census 的分类值

从 sklearn.preprocessing 导入标签编码器

le = LabelEncoder()
X_1 = X_census.apply(le.fit_transform)
X_2 = X_1.to_numpy()

3) 现在在我的 X_2 中使用 OneHotEncoder 将分类值转换为数值

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

oh = OneHotEncoder()
onehotencoder_census = ColumnTransformer(transformers=[('OneHot', oh, X_2[:])],remainder='passthrough')
X_census = onehotencoder_census.fit_transform(X_census) # Error appears here!

The Error

【问题讨论】:

你能展示你的 X_2 吗? 【参考方案1】:

你可以使用 pandas.get_dummies

df = pd.DataFrame("marital_status":['S','M','D','S','M','D','S','M','D' ], "性别":["男","女","男","女","男","女","男","女","男"], "教育":['grad','post-grad','grad','post-grad','grad','post-grad','grad','post-grad','grad'], “收入”:[125,135,120,110,90,150,180,130,110])

pd.get_dummies(df)

【讨论】:

以上是关于尝试将 LabelEncoder 和 OneHotEncoder 用于具有多列的数据集的主要内容,如果未能解决你的问题,请参考以下文章

尝试将 LabelEncoder 和 OneHotEncoder 用于具有多列的数据集

labelencoder 和 OneHotEncoder 的值错误

尝试使用 OneHot Encoder Python 的预处理错误

使用 labelEncoder 时输入形状错误

LabelEncoder 和OneHotEncoder

LabelEncoder 将不同的值编码为相同的值