Целевое среднее кодирование
Для начала вы создадите функцию, которая реализует целевое среднее кодирование. Необходимо выполнить два шага:
- Вычислить среднее на обучающей выборке и применить его к тестовой.
- Разбить обучающую выборку на K фолдов. Вычислить среднее вне фолда для каждого фолда и применить его к этому фолду.
Каждый из этих шагов будет реализован в отдельной функции: 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