Stratifiziertes K-Fold
Wie du gerade gesehen hast, ist die Verteilung der Zielvariable in den Folds durch die zufälligen Splits ziemlich unterschiedlich. Für diesen speziellen Wettbewerb ist das nicht entscheidend, kann aber bei Klassifikationswettbewerben mit stark unausgewogener Zielvariable problematisch sein.
Um das zu vermeiden, implementieren wir eine stratifizierte K-Fold-Strategie mit Stratifikation auf der Zielvariable. Der DataFrame train ist bereits in deinem Workspace verfügbar.
Diese Übung ist Teil des Kurses
Eine Kaggle-Competition in Python gewinnen
Anleitung zur Übung
- Erstelle ein
StratifiedKFold-Objekt mit 3 Folds und Shuffle. - Iteriere über jeden Split mit dem Objekt
str_kf. Die Stratifikation basiert auf der Spalte "interest_level". - Wähle für jeden Split die Trainings- und Test-Folds mit
train_indexundtest_indexaus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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