K-fold stratificat
Așa cum ai observat, distribuția variabilei țintă diferă destul de mult între folduri din cauza împărțirilor aleatoare. Pentru această competiție în particular nu este o problemă critică, însă poate deveni una în competițiile de clasificare cu o variabilă țintă puternic dezechilibrată.
Pentru a rezolva această situație, hai să implementăm strategia K-fold stratificat, cu stratificarea pe variabila țintă. DataFrame-ul train este deja disponibil în spațiul tău de lucru.
Acest exercițiu face parte din cursul
Câștigarea unei competiții Kaggle în Python
Instrucțiuni pentru exercițiu
- Creează un obiect
StratifiedKFoldcu 3 folduri și cu amestecare activată. - Iterează peste fiecare împărțire folosind obiectul
str_kf. Stratificarea se bazează pe coloana "interest_level". - Pentru fiecare împărțire, selectează foldurile de antrenament și testare folosind
train_indexșitest_index.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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