Aan de slagGa gratis aan de slag

Gestratificeerde K-fold

Zoals je net hebt gezien, verschilt de verdeling van de doelvariabele behoorlijk tussen de folds door de willekeurige splits. Dit is niet cruciaal voor deze specifieke competitie, maar kan wel een probleem zijn bij classificatiecompetities met een sterk uit onbalans zijnde doelvariabele.

Om dit te verhelpen, gaan we de gestratificeerde K-fold-strategie toepassen met stratificatie op de doelvariabele. De DataFrame train is al beschikbaar in je werkruimte.

Deze oefening maakt deel uit van de cursus

Een Kaggle-competitie winnen met Python

Cursus bekijken

Oefeninstructies

  • Maak een StratifiedKFold-object met 3 folds en shuffling.
  • Loop over elke split met het object str_kf. De stratificatie is gebaseerd op de kolom "interest_level".
  • Selecteer voor elke split de training- en testfolds met train_index en test_index.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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
Code bewerken en uitvoeren