Kom igångKom igång gratis

Stratifierad K-fold

Som du nyss märkte skiljer sig målvariabelns fördelning ganska mycket mellan de olika vikningarna på grund av de slumpmässiga uppdelningarna. Det är inte avgörande för just den här tävlingen, men kan bli ett problem i klassificeringstävlingar med en kraftigt obalanserad målvariabel.

För att hantera detta ska vi implementera en stratifierad K-fold-strategi med stratifiering på målvariabeln. DataFramen train finns redan tillgänglig i din arbetsyta.

Den här övningen är en del av kursen

Vinna en Kaggle-tävling i Python

Visa kurs

Övningsinstruktioner

  • Skapa ett StratifiedKFold-objekt med 3 vikningar och blandning aktiverad.
  • Iterera över varje uppdelning med hjälp av str_kf-objektet. Stratifieringen baseras på kolumnen "interest_level".
  • Välj tränings- och testvikningar för varje uppdelning med hjälp av train_index och test_index.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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
Redigera och kör kod