запутался на выходе горячего кодирования - PullRequest
0 голосов
/ 30 апреля 2018

Смущен, почему конечный результат равен [ 1., 0., 0., 1., 0., 0., 1., 0., 0.]?

http://scikit -learn.org / стабильный / модули / полученные / sklearn.preprocessing.OneHotEncoder.html

>>> from sklearn.preprocessing import OneHotEncoder
>>> enc = OneHotEncoder()
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])  
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,
       handle_unknown='error', n_values='auto', sparse=True)
>>> enc.n_values_
array([2, 3, 4])
>>> enc.feature_indices_
array([0, 2, 5, 9])
>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.]])

1 Ответ

0 голосов
/ 30 апреля 2018

Это ваши тренировочные данные:

  A    B    C    # <== feature names
  0    0    3
  1    1    0
  0    2    1
  1    0    2

Теперь, как вы видите в enc.n_values_: array([2, 3, 4])

Первая особенность A имеет два возможных значения = 0 и 1. Аналогично, функция B имеет три возможных значения = 0, 1, 2 ...

Теперь в выводе каждой функции будет назначено количество столбцов в соответствии с вышеуказанными значениями. Примерно так:

A_0   A_1   B_0   B_1   B_2   C_0   C_1   C_2   C_3

Здесь A_0 означает, что в данных присутствует 0. Итак, A_0 будет 1 (горячий) и A_1 будет 0. Если 1 присутствовал в этих данных, то A_1 будет 1 (горячий) и A_0 будет 0.

Итак, для ввода: A B C [0, 1, 1]

Здесь A = 0, поэтому A_0 будет 1, а остальные A_1 будут 0. для B B = 1, поэтому B_1 будет 1, а другие (B_0 и B_2) будут 0. То же самое для C.

Итоговый результат:

A_0   A_1   B_0   B_1   B_2   C_0   C_1   C_2   C_3
 1.,    0.,  0.,   1.,   0.,   0.,   1.,   0.,   0.

См. Это для получения дополнительной информации: http://scikit -learn.org / stable / modules / preprocessing.html # encoding -ategorical-features

...