CommencezCommencez gratuitement

K-fold stratifié

Comme vous venez de le constater, la distribution de la variable cible varie passablement 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 dans les compétitions de classification avec une variable cible très déséquilibrée.

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

Cette activité fait partie du cours

Remporter une compétition Kaggle en Python

Voir le cours

Instructions de l’exercice

  • Créez un objet StratifiedKFold avec 3 plis et activation du brassage (shuffling).
  • Parcourez 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