Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz obiekt StratifiedKFold z 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_index i test_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
Edytuj i uruchom kod