Стратифікований K-fold
Щойно ви помітили, що через випадкові поділи розподіл цільової змінної у фолдах суттєво різниться. Для цієї конкретної змагання це не критично, але у задачах класифікації з сильно незбалансованою цільовою змінною це може стати проблемою.
Щоб це усунути, реалізуймо стратіфіковану стратегію K-fold зі стратифікацією за цільовою змінною. Датафрейм train уже доступний у вашому робочому середовищі.
Ця вправа є частиною курсу
Як перемагати в змаганнях Kaggle за допомогою Python
Інструкції до вправи
- Створіть об'єкт
StratifiedKFoldіз 3 фолдами та перемішуванням. - Пройдіть циклом по кожному поділу, використовуючи об'єкт
str_kf. Стратифікація базується на стовпці "interest_level". - Для кожного поділу виберіть тренувальні та тестові фолди, використовуючи
train_indexтаtest_index.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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