IniziaInizia gratis

K-fold stratificato

Come hai appena notato, a causa delle suddivisioni casuali ottieni una distribuzione della variabile target piuttosto diversa tra i fold. Non è cruciale per questa competizione, ma potrebbe essere un problema nelle competizioni di classificazione con target fortemente sbilanciato.

Per superare questo problema, implementiamo la strategia K-fold stratificata con stratificazione sulla variabile target. Il DataFrame train è già disponibile nel tuo workspace.

Questo esercizio fa parte del corso

Vincere una competizione Kaggle con Python

Visualizza il corso

Istruzioni dell'esercizio

  • Crea un oggetto StratifiedKFold con 3 fold e con shuffling.
  • Itera su ciascuna suddivisione usando l’oggetto str_kf. La stratificazione si basa sulla colonna "interest_level".
  • Per ogni split seleziona i fold di training e di testing usando train_index e test_index.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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
Modifica ed esegui il codice