CommencerCommencez gratuitement

K-fold stratifié

Comme vous venez de le constater, la distribution de la variable cible varie fortement d’un pli à l’autre à cause des séparations aléatoires. Ce n’est pas crucial pour cette compétition en particulier, mais cela peut poser problème pour des compétitions de classification avec une cible très déséquilibrée.

Pour y remédier, mettons en place une stratégie de K-fold stratifié en se basant sur la variable cible. Le DataFrame train est déjà disponible dans votre espace de travail.

Cet exercice fait partie du cours

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

Instructions de l’exercice

  • Créez un objet StratifiedKFold avec 3 plis et un mélange aléatoire (shuffling).
  • Itérez sur chaque séparation à l’aide de l’objet str_kf. La stratification se fait sur la colonne "interest_level".
  • Pour chaque séparation, sélectionnez les plis d’entraînement et de test en utilisant train_index et test_index.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Import StratifiedKFold
from sklearn.model_selection import StratifiedKFold

# Create a StratifiedKFold object
str_kf = ____(n_splits=____, shuffle=____, random_state=123)

# Loop through each split
fold = 0
for train_index, test_index in ____.____(train, train['interest_level']):
    # Obtain training and testing folds
    cv_train, cv_test = ____.iloc[____], ____.iloc[____]
    print('Fold: {}'.format(fold))
    print('CV train shape: {}'.format(cv_train.shape))
    print('Medium interest listings in CV train: {}\n'.format(sum(cv_train.interest_level == 'medium')))
    fold += 1
Modifier et exécuter le code