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))