无法反转编码的分类变量

2024-06-01 07:04:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据框中有一个分类变量(a,B,C)。然后,我对它进行编码(使其成为数字),以便传入神经网络。你知道吗

然而,我的最终可视化图形显示了分类变量的编码值,我很难将其映射回原始值。你知道吗

我首先使用这个命令将分类变量(数据类型=对象)编码为数值:

encoders = {}
for x in df.columns:
    if df[x].dtypes=='object':
      le = preprocessing.LabelEncoder()
      df[x]=le.fit_transform(df[x].astype(str))
      encoders[x] = le     

corr = df.corr()

然后,我用这段代码解码(就在最终可视化之前):

for x, le in encoders.items():
    df[x] = le.inverse_transform(df[x])

    # Visualization: plotting categorical variables (A,B,C) in scatterplot using Seaborn.
    sns.lmplot(x="A", y="B", data=df, fit_reg=False, hue='C',legend=False)
    display()

…但是可视化仍然显示编码值而不是分类值(见下面的屏幕截图)。未进行映射。为什么?你知道吗

enter image description here


Tags: 数据in网络lefalse编码dffor
1条回答
网友
1楼 · 发布于 2024-06-01 07:04:35

您必须存储原始的LabelEncoder。映射存储在该类中。所以有些东西

encoders = {}
for x in df.columns:
    if df[x].dtypes=='object':
       le = preprocessing.LabelEncoder()
       df[x]=le.fit_transform(df[x].astype(str))
       encoders[x] = le

for x, le in encoders.items():
    df[x] = le.inverse_transform(df[x])

或者更好的是,不要用编码的标签覆盖标签,而是在数据帧中创建一个新列。你知道吗

相关问题 更多 >