CommencerCommencer 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

Gagner une compétition Kaggle en Python

Afficher le cours

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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