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

K-fold кросс-валидация

Вы будете работать с задачей бинарной классификации на подвыборке из соревнования Kaggle Playground. Цель соревнования — предсказать, забросил ли знаменитый баскетболист Коби Брайант мяч в корзину или промахнулся в конкретном броске.

Обучающие данные доступны в вашем рабочем пространстве в виде датафрейма bryant_shots. Он содержит информацию о 10 000 бросках с их характеристиками и целевой переменной "shot\_made\_flag" — попал ли игрок в корзину или нет.

Один из признаков в данных — "game_id", то есть конкретная игра, в которой был выполнен бросок. Всего таких игр 541. Таким образом, вы работаете с категориальным признаком высокой мощности. Закодируем его с помощью среднего значения целевой переменной!

Предположим, вы используете 5-кратную кросс-валидацию и хотите оценить признак, закодированный через среднее целевой переменной, на локальной валидации.

Это упражнение является частью курса

Победа в соревновании Kaggle на Python

Посмотреть курс

Инструкции к упражнению

  • Для этого необходимо выполнять процедуру кодирования категориального признака "game_id" отдельно внутри каждого разбиения на фолды. Ваша задача — указать все недостающие параметры при вызове функции mean_target_encoding() внутри каждого такого разбиения.
  • Помните, что параметры train и test принимают обучающий и тестовый датафреймы.
  • Параметры target и categorical принимают названия целевой переменной и категориального признака, который нужно закодировать.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Create 5-fold cross-validation
kf = KFold(n_splits=5, random_state=123, shuffle=True)

# For each folds split
for train_index, test_index in kf.split(bryant_shots):
    cv_train, cv_test = bryant_shots.iloc[train_index], bryant_shots.iloc[test_index]

    # Create mean target encoded feature
    cv_train['game_id_enc'], cv_test['game_id_enc'] = mean_target_encoding(train=cv_train,
                                                                           test=____,
                                                                           target='shot_made_flag',
                                                                           categorical='____',
                                                                           alpha=5)
    # Look at the encoding
    print(cv_train[['game_id', 'shot_made_flag', 'game_id_enc']].sample(n=1))
Редактировать и запускать код