2017-11-02 7 views
1

I Label codiert meine kategorische Daten in numerische Daten-Label-EncoderReverse-Label-Encoding geben Fehler

Aber ich, wenn ich zu finden versuchen, wie sie intern abgebildet werden mit

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

ich immer bin unten Fehler


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' 

Wie beheben diese

Beispieldaten

Resi 
IP 
IP 
IP 
IP 
IP 
IE 
IP 
IP 
IP 
IP 
IP 
IPD 
IE 
IE 
IP 
IE 
IP 
IP 
IP 
+0

Können Sie bitte einige Daten teilen? Was zeigt der 'LabelEncoder.classes_'? –

+0

@VivekKumar, aktualisiert die Beispieldaten in Frage – NgBrandon

Antwort

1

können Sie überprüfen 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]) 

Und für Ihre Lösung:

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} 
+0

@jezral, Wie finde ich welches Label welche Kategorie entspricht. Ie IP = 0, IPD = 1, so weiter – NgBrandon

+0

Überprüfen Sie die letzte Änderung. – jezrael

1

Sie speichern das LabelEncoder() -Objekt nirgendwo. Sie müssen es so speichern:

le = LabelEncoder()

Und dann fit() aufrufen oder 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'] 
+0

Wie finde ich heraus, welches Label welcher Kategorie entspricht? – NgBrandon

+0

@NgBrandon Sie werden in alphabetischer Reihenfolge von 0,1,2 ... –