Mapeamento OneHotEncoding

Para discretizar recursos categóricos, estou usando um LabelEncoder e OneHotEncoder. Eu sei que o LabelEncoder mapeia os dados em ordem alfabética, mas como o OneHotEncoder mapeia os dados?

Eu tenho um dataframe de pandas,dataFeat com 5 colunas diferentes e 4 rótulos possíveis, como acima.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  

Eu aplico umlabelencoder como isso,

le = preprocessing.LabelEncoder()

intIndexed = dataFeat.apply(le.fit_transform)

É assim que os rótulos são codificados pelo LabelEncoder

Label   LabelEncoded
 A         0
 B         1
 C         2
 D         3

Aplico então um OneHotEncoder como este

enc = OneHotEncoder(sparse = False)

encModel = enc.fit(intIndexed)

dataFeatY = encModel.transform(intIndexed)

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

Estou um pouco confuso com a forma dedataFeatY - não deveria ser também 95,5?

Seguindo a resposta MhFarahani abaixo, eu fiz isso para ver como os rótulos são mapeados

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

Isso significa que os rótulos são mapeados dessa maneira ou é diferente para cada coluna? (o que explicaria a forma sendo 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.

questionAnswers(1)

yourAnswerToTheQuestion