Стратифицированный 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