反向标签编码给出错误

NgB*_*don 4 python numpy pandas scikit-learn sklearn-pandas

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

data['Resi'] = LabelEncoder().fit_transform(data['Resi'])
Run Code Online (Sandbox Code Playgroud)

但是当我试图找到它们如何在内部使用时

list(LabelEncoder.inverse_transform(data['Resi']))
Run Code Online (Sandbox Code Playgroud)

我得到以下错误


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'
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题

样本数据

Resi
IP
IP
IP
IP
IP
IE
IP
IP
IP
IP
IP
IPD
IE
IE
IP
IE
IP
IP
IP
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 5

您可以检查标签编码

>>> 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])
Run Code Online (Sandbox Code Playgroud)

对于您的解决方案:

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']
Run Code Online (Sandbox Code Playgroud)

编辑:

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