Label Encoding: обработайте неизвестные категории в test

При подготовке категориального признака тестовая выборка содержит значения, которых не было при обучении кодировщика. Реализуйте solve(payload) с форматом результата и обработкой новых категорий из условия. Подготовку табличных моделей, inference pipeline и deployment отработайте в платном курсе ML Engineer / Data Scientist: табличные модели в продакшн — откройте программу.

Безопасное Label Encoding с пометкой новых категорий

Вам дан DataFrame с категориальным признаком и отдельный DataFrame для теста, где в тестовой выборке могут встречаться категории, отсутствующие в обучающей.

Постановка

  • Обучить LabelEncoder на train данных.
  • В test заменить неизвестные категории на специальный код -1.
  • Вернуть два столбца:
    • train_encoded: Series с кодированием train (числа от 0 до N-1).
    • test_encoded: Series с кодированием test, где неизвестные категории имеют значение -1.

Таким образом, кодирование в test будет безопасным, без ошибок при трансформации новых категорий.

Формат входных данных:

  • payload["df_train"] — DataFrame с train.
  • payload["df_test"] — DataFrame с test.
  • payload["cat_col"] — название категориального столбца.

Формат результата:

  • Словарь с ключами train_encoded и test_encoded, значениями — pandas.Series с индексами, соответствующими df_train и df_test.

Пример


import pandas as pd

train = pd.DataFrame({'city': ['London', 'Paris', 'Berlin', 'London']})
test = pd.DataFrame({'city': ['Paris', 'Madrid', 'London']})
col = 'city'

# train_encoded будет [1, 2, 0, 1]
# test_encoded будет [2, -1, 1] потому что 'Madrid' в test новая категория

РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи