Найти тему
597 подписчиков

Числовое кодирование категориальных переменных

Рассмотрим способ числового кодирования колонок датафрейма, имеющих небольшой набор значений. В частности, распространено порядковое кодирование, которое каждой категории ставит в соответствие целое число 0, 1, ...,число_категорий -1. Обратите внимание, что после такого кодирования признак приобретает упорядоченность (например, 5>3 и отличается на 2), и если будет интерпретироваться не как категориальный, а числовой может дезориентировать модель машинного обучения (в этом случае лучше использовать onehot кодирование).

Порядковое кодирование реализуется классом OrdinalEncoder модуля sklearn.preprocessing. Рассмотрим его работу на следующем датафрейме:

Рассмотрим способ числового кодирования колонок датафрейма, имеющих небольшой набор значений.

С помощью OrdinalEncoder трансформации можно подвергать сразу несколько столбцов:

Рассмотрим способ числового кодирования колонок датафрейма, имеющих небольшой набор значений.-2

В свойстве categories_ хранятся массивы с выделенными в ходе fit-а категориями:

Рассмотрим способ числового кодирования колонок датафрейма, имеющих небольшой набор значений.-3

А так можно получить трансформированный датафрейм и дать ему осмысленные названия колонок:

Рассмотрим способ числового кодирования колонок датафрейма, имеющих небольшой набор значений.-4

С методом inverse_transform можно обратно трансформировать числа в наименований категорий:

Рассмотрим способ числового кодирования колонок датафрейма, имеющих небольшой набор значений.-5
Рассмотрим способ числового кодирования колонок датафрейма, имеющих небольшой набор значений.-6