Začněte nyníZačněte zdarma

Stratifikovaný K-fold

Jak sis právě všiml/a, distribuce cílové proměnné se mezi jednotlivými foldy poměrně liší – kvůli náhodným rozdělením. Pro tuto konkrétní soutěž to není zásadní problém, ale u klasifikačních soutěží s výrazně nevyváženou cílovou proměnnou to může být problematické.

Aby ses tomu vyhnul/a, implementuj strategii stratifikovaného K-foldu se stratifikací na cílové proměnné. DataFrame train už máš v pracovním prostoru k dispozici.

Toto cvičení je součástí kurzu

Jak vyhrát soutěž na Kaggle v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř objekt StratifiedKFold se 3 foldy a povoleným náhodným mícháním.
  • Projdi každé rozdělení pomocí objektu str_kf. Stratifikace je založena na sloupci "interest_level".
  • Pro každé rozdělení vyber trénovací a testovací foldy pomocí train_index a test_index.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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
Upravit a spustit kód