НачатьНачать бесплатно

Стратифицированный K-блочный метод

Как вы только что заметили, распределение целевой переменной между блоками получается довольно неравномерным из-за случайного разбиения. Для данного соревнования это не критично, однако в задачах классификации с сильно несбалансированной целевой переменной такая ситуация может стать серьёзной проблемой.

Чтобы избежать этого, реализуем стратегию стратифицированного K-блочного разбиения с использованием целевой переменной. DataFrame 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
Редактировать и запускать код