One-Hot Encoding в pandas

One-Hot Encoding – прямое кодирование, или быстрое кодирование или отображение, используется в подготовке признаков с помощью преобразования категориального признака в числовой.

Его смысл заключается в следующем: для каждого значения признака создается новый столбец, новые признаки получают значения 1 или 0, в зависимости от значения первоначального признака, новые признаки обычно называют дамми-признаками (фиктивными признаками). Довольно просто объясняется на примере.

Допустим, есть датафрейм с признаками: user_id, ‘gender’, где ‘gender’ представленное в значениях ‘M’, ‘F’, None

После применения прямого кодирования, мы получим следующие признаки user_id, gender_F, gender_M
print(pd.get_dummies(user_df))

Прямое кодирование было выполнено средствами библиотеки pandas, метода get_dummies. Он принимает как DataFrame, так и Series, есть возможность добавлять префиксы к дамми-признакам, добавлять/не добавлять колонку с Nan, убирать первый столбец (k-1 из числа k дамми-признаков). Убирать первый столбец бывает полезно, когда новые (дамми) столбцы сильно связаны между собой и один из них можно восстановить по значениям из других (в случае выше это Nan), что бы избежать ловушки фиктивных признаков.

Полный пример кода

Этот способ кодирования имеет место быть, но он резко увеличивает количество столбцов. Используя прямое кодирование работая, например, с признаком Питомец (кошка, собака, попугай) и вычислениях, например, среднего арифметического мы не получим закодированную собаку и не добавим неверную корреляцию, как в случае порядкового кодирования.