Encodage cible par la moyenne
D'abord, vous allez créer une fonction qui met en œuvre l'encodage cible par la moyenne. Rappelez-vous que vous devez réaliser les deux étapes suivantes :
- Calculer la moyenne sur l'ensemble d'entraînement, l'appliquer à l'ensemble de test
- Diviser l'entraînement en K plis. Calculer la moyenne « out-of-fold » pour chaque pli, l'appliquer à ce pli particulier
Chacune de ces étapes sera implémentée dans une fonction distincte : test_mean_target_encoding() et train_mean_target_encoding(), respectivement.
La fonction finale mean_target_encoding() prend comme arguments : les DataFrames d'entraînement et de test, le nom de la colonne catégorielle à encoder, le nom de la colonne cible et un paramètre d'adoucissement alpha. Elle retourne deux valeurs : une nouvelle caractéristique pour les DataFrames d'entraînement et de test, respectivement.
Cette activité fait partie du cours
Remporter une compétition Kaggle en Python
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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