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

K-fold перехресна валідація

Ви працюватимете із задачею бінарної класифікації на підвибірці з змагання Kaggle playground. Мета цього змагання — спрогнозувати, чи відомий баскетболіст Кобі Браянт влучив у кошик або промахнувся під час конкретного кидка.

Тренувальні дані доступні у вашому робочому середовищі як датафрейм bryant_shots. Він містить дані про 10 000 кидків з їхніми властивостями та змінну target "shot\_made\_flag" — чи був кидок результативним.

Одна з ознак у даних — "game_id" — конкретний матч, у якому зроблено кидок. Є 541 різний матч. Отже, ви маєте справу з категоріальною ознакою з великою кількістю рівнів. Закодуймо її за допомогою середнього цільового значення (target mean)!

Припустімо, ви використовуєте 5-фолд перехресну валідацію й хочете оцінити ознаку, закодовану середнім значенням цілі, на локальній валідації.

Ця вправа є частиною курсу

Як перемагати в змаганнях Kaggle за допомогою Python

Переглянути курс

Інструкції до вправи

  • Щоб це зробити, потрібно повторити процедуру кодування для категоріальної ознаки "game_id" окремо в межах кожного розбиття на фолди. Ваше завдання — вказати всі відсутні параметри для виклику функції mean_target_encoding() у кожному розбитті на фолди.
  • Зважайте, що параметри train і test очікують датафрейми 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))
Редагувати та запускати код