ПочатиПочніть безкоштовно

Стратифікований 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
Редагувати та запускати код