Середнє кодування за цільовою змінною (mean target encoding)
Спершу ви створите функцію, що реалізує середнє кодування за цільовою змінною. Пам'ятайте, що потрібно виконати два кроки:
- Обчислити середнє на тренувальних даних і застосувати до тестових
- Розбити тренувальні дані на K фолдів. Для кожного фолду обчислити out-of-fold середнє та застосувати до цього конкретного фолду
Кожен із цих кроків буде реалізовано в окремій функції: відповідно test_mean_target_encoding() і train_mean_target_encoding().
Підсумкова функція mean_target_encoding() приймає як аргументи: тренувальний і тестовий DataFrame, назву категоріального стовпця для кодування, назву цільового стовпця та параметр згладжування alpha. Вона повертає два значення: нову ознаку для тренувального і тестового DataFrame відповідно.
Ця вправа є частиною курсу
Як перемагати в змаганнях Kaggle за допомогою Python
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
def test_mean_target_encoding(train, test, target, categorical, alpha=5):
# Calculate global mean on the train data
global_mean = train[target].mean()
# Group by the categorical feature and calculate its properties
train_groups = train.groupby(categorical)
category_sum = train_groups[target].sum()
category_size = train_groups.size()
# Calculate smoothed mean target statistics
train_statistics = (category_sum + global_mean * alpha) / (category_size + ____)
# Apply statistics to the test data and fill new categories
test_feature = test[categorical].map(train_statistics).fillna(____)
return test_feature.values