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
Ö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_indexochtest_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