Validation croisée K-fold
Vous allez travailler sur un problème de classification binaire à partir d'un sous-échantillon d'une compétition Kaggle Playground. L'objectif est de prédire si le célèbre basketteur Kobe Bryant a réussi ou raté un tir donné.
Les données d'entraînement sont disponibles dans votre espace de travail sous forme de DataFrame bryant_shots. Elles contiennent des informations sur 10 000 tirs, leurs propriétés et une variable target "shot\_made\_flag" — indiquant si le tir a été réussi ou non.
L'une des caractéristiques des données est "game_id" — la partie précise au cours de laquelle le tir a eu lieu. On compte 541 matchs distincts. Vous avez donc affaire à une caractéristique catégorielle à forte cardinalité. Encodons-la avec une moyenne par cible (target mean) !
Supposons que vous utilisiez une validation croisée en 5 plis et que vous vouliez évaluer une caractéristique encodée par moyenne cible sur la validation locale.
Cette activité fait partie du cours
Remporter une compétition Kaggle en Python
Instructions de l’exercice
- Pour y parvenir, vous devez répéter la procédure d'encodage pour la caractéristique catégorielle
"game_id"séparément à l'intérieur de chaque division en plis. Votre objectif est de préciser tous les paramètres manquants pour l'appel à la fonctionmean_target_encoding()dans chaque division en plis. - Rappelez-vous que les paramètres
trainettestattendent les DataFrames d'entraînement et de test. - Quant aux paramètres
targetetcategorical, ils attendent les noms de la variable cible et de la caractéristique catégorielle à encoder.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Create 5-fold cross-validation
kf = KFold(n_splits=5, random_state=123, shuffle=True)
# For each folds split
for train_index, test_index in kf.split(bryant_shots):
cv_train, cv_test = bryant_shots.iloc[train_index], bryant_shots.iloc[test_index]
# Create mean target encoded feature
cv_train['game_id_enc'], cv_test['game_id_enc'] = mean_target_encoding(train=cv_train,
test=____,
target='shot_made_flag',
categorical='____',
alpha=5)
# Look at the encoding
print(cv_train[['game_id', 'shot_made_flag', 'game_id_enc']].sample(n=1))