OneHotEncoding Mapping

Um kategoriale Features zu diskretisieren, verwende ich einen LabelEncoder und einen OneHotEncoder. Ich weiß, dass LabelEncoder Daten alphabetisch ordnet, aber wie ordnet OneHotEncoder Daten zu?

Ich habe einen Pandas-Datenrahmen,dataFeat mit 5 verschiedenen Spalten und 4 möglichen Bezeichnungen, wie oben.dataFeat = data[['Feat1', 'Feat2', 'Feat3', 'Feat4', 'Feat5']]

Feat1  Feat2  Feat3  Feat4  Feat5
  A      B      A      A      A
  B      B      C      C      C
  D      D      A       A     B
  C      C      A       A     A  

Ich bewerbe mich um einlabelencoder so was

le = preprocessing.LabelEncoder()

intIndexed = dataFeat.apply(le.fit_transform)

So werden die Labels vom LabelEncoder codiert

Label   LabelEncoded
 A         0
 B         1
 C         2
 D         3

Ich wende dann einen OneHotEncoder wie diesen an

enc = OneHotEncoder(sparse = False)

encModel = enc.fit(intIndexed)

dataFeatY = encModel.transform(intIndexed)

intIndexed.shape = 94,5 unddataFeatY.shape=94,20 .

Ich bin ein bisschen verwirrt mit der Form vondataFeatY - sollte es nicht auch 95,5 sein?

Nach der folgenden Antwort von MhFarahani habe ich dies getan, um zu sehen, wie Labels zugeordnet werden

import numpy as np

S = np.array(['A', 'B','C','D'])
le = LabelEncoder()
S = le.fit_transform(S)
print(S)

[0 1 2 3]

ohe = OneHotEncoder()
one_hot = ohe.fit_transform(S.reshape(-1,1)).toarray()
print(one_hot.T)

[[ 1.  0.  0.  0.]
 [ 0.  1.  0.  0.]
 [ 0.  0.  1.  0.]
 [ 0.  0.  0.  1.]]

Bedeutet dies, dass Beschriftungen wie folgt zugeordnet sind, oder ist dies für jede Spalte unterschiedlich? (was erklären würde, dass die Form 94,20 ist)

Label   LabelEncoded    OneHotEncoded
 A         0               1.  0.  0.  0
 B         1               0.  1.  0.  0.
 C         2               0.  0.  1.  0.
 D         3               0.  0.  0.  1.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage