反向标签编码出现错误

6

我使用标签编码器将我的分类数据转换为数字数据。

data['Resi'] = LabelEncoder().fit_transform(data['Resi'])

但是当我尝试使用相关工具查找它们在内部的映射关系时

list(LabelEncoder.inverse_transform(data['Resi']))

我遇到了以下错误:


TypeError                                 Traceback (most recent call last)
<ipython-input-67-419ab6db89e2> in <module>()
----> 1 list(LabelEncoder.inverse_transform(data['Resi']))

TypeError: inverse_transform() missing 1 required positional argument: 'y'

如何解决这个问题

示例数据

Resi
IP
IP
IP
IP
IP
IE
IP
IP
IP
IP
IP
IPD
IE
IE
IP
IE
IP
IP
IP

你能分享一些数据吗?LabelEncoder.classes_ 表示什么? - Vivek Kumar
@VivekKumar,已更新问题中的示例数据。 - NgBrandon
3个回答

8
你可以查看标签编码相关的内容:label encoding
>>> from sklearn import preprocessing
>>> le = preprocessing.LabelEncoder()
>>> le.fit([1, 2, 2, 6])
LabelEncoder()
>>> le.classes_
array([1, 2, 6])
>>> le.transform([1, 1, 2, 6])
array([0, 0, 1, 2])
>>> le.inverse_transform([0, 0, 1, 2])
array([1, 1, 2, 6])

以下是您的解决方案:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder().fit(data['Resi'])
data['Resi'] = le.transform(data['Resi'])
print (data.tail())
    Resi
14     1
15     0
16     1
17     1
18     1

L = list(le.inverse_transform(data['Resi']))
print (L)
['IP', 'IP', 'IP', 'IP', 'IP', 'IE', 'IP', 'IP', 'IP', 
 'IP', 'IP', 'IPD', 'IE', 'IE', 'IP', 'IE', 'IP', 'IP', 'IP']

EDIT:

d = dict(zip(le.classes_, le.transform(le.classes_)))
print (d)
{'IE': 0, 'IPD': 2, 'IP': 1}

@jezral,我该如何找到哪个标签对应哪个类别。例如IP = 0,IPD = 1,以此类推。 - NgBrandon

1

您没有将LabelEncoder()对象存储在任何地方。您需要像这样保存它:

le = LabelEncoder()

然后调用fit()transform()
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder

ls = ['IP', 'IP', 'IP', 'IP', 'IP', 'IE', 'IP', 'IP', 'IP', 'IP', 'IP', 'IPD', 'IE', 'IE', 'IP', 'IE', 'IP', 'IP', 'IP']

data = pd.DataFrame(np.array(ls).reshape(-1,1), columns=['Resi'])

le = LabelEncoder()
data['Resi'] = le.fit_transform(data['Resi'])

df['resi'] = LabelEncoder().fit_transform(df['resi'])
list(le.inverse_transform(data['Resi']))

Out: 
['IP',
 'IP',
 'IP',
 'IP',
 'IP',
 'IE',
 'IP',
 'IP',
 'IP',
 'IP',
 'IP',
 'IPD',
 'IE',
 'IE',
 'IP',
 'IE',
 'IP',
 'IP',
 'IP']

1
我该如何找出哪个标签对应哪个类别? - NgBrandon

0
encoder = LabelEncoder()  
encoder.inverse_transform(data['Resi'])

请始终将您的答案放在上下文中,而不仅仅是粘贴代码。有关更多详细信息,请参见此处 - gehbiszumeis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接