CommencerCommencez gratuitement

Encodage cible par la moyenne

Vous allez d’abord créer une fonction qui implémente l’encodage cible par la moyenne. Rappelez-vous que vous devez réaliser les deux étapes suivantes :

  1. Calculer la moyenne sur le train, puis l’appliquer au test
  2. Diviser le train en K folds. Calculer la moyenne hors fold (out-of-fold) pour chaque fold, puis l’appliquer à ce fold en 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 de train et de test, le nom de la colonne catégorielle à encoder, le nom de la colonne cible et un paramètre de lissage alpha. Elle renvoie deux valeurs : une nouvelle caractéristique pour les DataFrames de train et de test, respectivement.

Cet exercice fait partie du cours

<cours>Gagner une compétition Kaggle en Python</cours>
Voir le cours

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
Modifier et exécuter le code