Stratyfikowany K-fold
Jak właśnie zauważasz, rozkład zmiennej docelowej różni się dość znacznie między foldami ze względu na losowe podziały. W przypadku tego konkretnego konkursu nie jest to kluczowy problem, jednak może stanowić poważne wyzwanie w konkursach klasyfikacyjnych z mocno niezrównoważoną zmienną docelową.
Aby sobie z tym poradzić, zaimplementuj strategię stratyfikowanego K-fold z podziałem według zmiennej docelowej. DataFrame train jest już dostępny w twoim środowisku pracy.
To ćwiczenie jest częścią kursu
Zwycięstwo w konkursie Kaggle w Pythonie
Instrukcje do ćwiczenia
- Utwórz obiekt
StratifiedKFoldz 3 foldami i włączonym mieszaniem. - Iteruj po każdym podziale za pomocą obiektu
str_kf. Stratyfikacja opiera się na kolumnie "interest_level". - Dla każdego podziału wybierz foldy treningowe i testowe, używając
train_indexitest_index.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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