I Прямое кодирование (One-Hot Encoding, OHE) для преобразования категориальных признаков в численные.
Работает со всеми моделями, в том числе подходит и для логистической регрессии, когда все признаки должны стать количественными.
1) создаём новый столбец для каждого варианта значения признака, в котором будет уже новый признак дамми-признак, дамми-переменная;
2) присваиваем 1, если экзмепляру категория подходит, присваиваем 0 - если не подходит.
функция pd.get_dummies()
а) ко всему датафрейму
pd.get_dummies(df)
б) к столбцу
pd.get_dummies(df['col1'])
в) drop_first=True (чтобы избежать дамми-ловушки)
pd.get_dummies(df['col1'], drop_first=True)
II Порядковое кодирование (Ordinal Encoding) позволяет закодировать категории цифрами, с помощью номера категории.
Подходит для преобразования признаков в решающем дереве, случайном лесе, когда все признаки категориальные, и их нужно преобразовать в числа.
Не подходит для логистической регрессии.
from sklearn.preprocessing import OrdinalEncoder
encoder = OrdinalEncoder() #получаем список категориальных признаков
encoder.fit(df)
Далее
а) df_new_ordinal = encoder.transform(df) # только преобразуем данные
б)df_new_ordinal = pd.DataFrame(encoder.transform(df), columns=df.columns) # преобразуем данные и даем названия столбцов
в)df_new_ordinal = pd.DataFrame(encoder.fit_transform(df), columns=df.columns) # можно одновременно подогнать и преобразовать