Рассмотрим следующий код с сайта scikitlearn:
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male', 1], ['Female', 3], ['Female', 2]]
enc.fit(X)
Это позволит мне представить категориальную информацию в виде двоичного ввода.Вывод кода:
enc.get_feature_names()
равен
array(['x0_Female', 'x0_Male', 'x1_1', 'x1_2','x1_3'],dtype=object)
, который показывает новые функции в преобразованном пространстве.Однако почему он должен представлять женщину и мужчину отдельно?Это взаимоисключающая информация, которая должна быть представлена в виде единой функции, например, 0 -> женщина и 1 -> мужчина.Запустив код,
enc.transform([['Female', 1], ['Male', 2]]).toarray()
, получим
array([[1., 0., 1., 0., 0.],
[0., 1., 0., 1., 0.]])
Поскольку для этой категории есть только два возможных входа, то первые два элемента каждой строки будут либо 0-1для мужчин или 1-0 для женщин.Соотношение между ними будет -1.Эта информация может быть представлена как одна особенность, почему она составляет 2?