it-swarm.com.de

OneHotEncoder categoryical_features hat abgeschrieben, wie eine bestimmte Spalte transformiert wird

Ich muss das unabhängige Feld von der Zeichenfolge in die arithmetische Notation umwandeln. Ich verwende OneHotEncoder für die Transformation. Mein Datensatz enthält viele unabhängige Spalten, von denen einige wie folgt lauten:

Country     |    Age       
--------------------------
Germany     |    23
Spain       |    25
Germany     |    24
Italy       |    30 

Ich muss die Country-Spalte wie codieren

0     |    1     |     2     |       3
--------------------------------------
1     |    0     |     0     |      23
0     |    1     |     0     |      25
1     |    0     |     0     |      24 
0     |    0     |     1     |      30

Es gelingt mir, die Wunschtransformation über OneHotEncoder as zu erreichen

#Encoding the categorical data
from sklearn.preprocessing import LabelEncoder

labelencoder_X = LabelEncoder()
X[:,0] = labelencoder_X.fit_transform(X[:,0])

#we are dummy encoding as the machine learning algorithms will be
#confused with the values like Spain > Germany > France
from sklearn.preprocessing import OneHotEncoder

onehotencoder = OneHotEncoder(categorical_features=[0])
X = onehotencoder.fit_transform(X).toarray()

Jetzt erhalte ich die Abschreibungsnachricht zur Verwendung von categories='auto'. Wenn ich das tue, wird die Transformation für alle unabhängigen Spalten wie Land, Alter, Gehalt usw. durchgeführt.

Wie wird die Transformation nur für die 0. Spalte des Datensatzes erreicht?

10
Hassaan

Ich hatte das gleiche Problem und Folgendes funktionierte für mich:

OneHotEncoder(categories='auto', sparse=False)

Hoffe das hilft

0
user1970528

Verwenden Sie den folgenden Code: -

from sklearn.preprocessing import OneHotEncoder

from sklearn.compose import ColumnTransformer

columnTransformer = ColumnTransformer([('encoder', OneHotEncoder(), [0])], remainder='passthrough')

X = np.array(columnTransformer.fit_transform(X), dtype = np.str)

print(X)
0