OneHotEncoding Mapping

Para discretizar características categóricas, estoy usando un LabelEncoder y OneHotEncoder. Sé que LabelEncoder asigna datos alfabéticamente, pero ¿cómo OneHotEncoder asigna datos?

Tengo un marco de datos de pandas,dataFeat con 5 columnas diferentes y 4 etiquetas posibles, como las anteriores.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  

Aplico unlabelencoder Me gusta esto,

le = preprocessing.LabelEncoder()

intIndexed = dataFeat.apply(le.fit_transform)

Así es como LabelEncoder codifica las etiquetas

Label   LabelEncoded
 A         0
 B         1
 C         2
 D         3

Luego aplico un OneHotEncoder como este

enc = OneHotEncoder(sparse = False)

encModel = enc.fit(intIndexed)

dataFeatY = encModel.transform(intIndexed)

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

Estoy un poco confundido con la forma dedataFeatY - ¿No debería ser también 95,5?

Siguiendo la respuesta de MhFarahani a continuación, hice esto para ver cómo se asignan las etiquetas

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.]]

¿Esto significa que las etiquetas se asignan de esta manera, o es diferente para cada columna? (lo que explicaría que la forma sea 94,20)

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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta