Порядковое кодирование DataFrame
Категориальные признаки можно кодировать двумя способами: с помощью прямого кодирования (one-hot encoding) и порядкового кодирования (ordinal encoding). При прямом кодировании каждая категория становится отдельным столбцом: для каждой строки значение соответствующего столбца равно 1, остальные — 0. При порядковом кодировании категории заменяются целыми числами, начиная с 0 и до количества категорий.
В этом упражнении вы пройдёте по всем столбцам DataFrame users и применёте порядковое кодирование к категориям. Для каждого столбца вы также сохраните объект энкодера в словарь ordinal_enc_dict, чтобы впоследствии можно было восстановить исходные категории.
Это упражнение является частью курса
Работа с пропущенными данными в Python
Инструкции к упражнению
- Определите пустой словарь
ordinal_enc_dict. - Создайте объект порядкового энкодера для каждого столбца.
- Выберите ненулевые значения столбца в
usersи закодируйте их. - Запишите закодированные значения обратно в ненулевые позиции каждого столбца (
col_name) вusers.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create an empty dictionary ordinal_enc_dict
ordinal_enc_dict = ___
for col_name in users:
# Create Ordinal encoder for col
ordinal_enc_dict[col_name] = ___
col = users[col_name]
# Select non-null values of col
col_not_null = ___
reshaped_vals = col_not_null.values.reshape(-1, 1)
encoded_vals = ordinal_enc_dict[col_name].fit_transform(reshaped_vals)
# Select the non-null values for the column col_name in users and store the encoded values
users.loc[___, ___] = np.squeeze(encoded_vals)