CommencerCommencer 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

Gagner une compétition Kaggle en Python

Afficher le cours

Instructions

  • 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 cet exemple de code.

# 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