OneHotEncoding Mapping

Для дискретизации категориальных функций я использую LabelEncoder и OneHotEncoder. Я знаю, что LabelEncoder отображает данные в алфавитном порядке, но как OneHotEncoder отображает данные?

У меня есть датафрейм для панд,dataFeat с 5 различными столбцами и 4 возможными метками, как указано выше.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  

Я применяюlabelencoder как это,

le = preprocessing.LabelEncoder()

intIndexed = dataFeat.apply(le.fit_transform)

Вот как метки кодируются с помощью LabelEncoder

Label   LabelEncoded
 A         0
 B         1
 C         2
 D         3

Затем я применяю OneHotEncoder, как это

enc = OneHotEncoder(sparse = False)

encModel = enc.fit(intIndexed)

dataFeatY = encModel.transform(intIndexed)

intIndexed.shape = 94,5 а такжеdataFeatY.shape=94,20 .

Я немного запутался с формойdataFeatY - не должно ли это быть 95,5?

Следуя ответу MhFarahani ниже, я сделал это, чтобы увидеть, как отображаются метки

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

Означает ли это, что метки отображаются так, или они различны для каждого столбца? (что объясняет форму 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.

Ответы на вопрос(1)

Ваш ответ на вопрос