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
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_indexentest_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