K-fold 교차 검증
Kaggle playground 대회의 서브샘플로 이진 분류 문제를 풀어 볼게요. 이 대회의 목표는 유명 농구 선수 Kobe Bryant가 특정 슛을 성공했는지(득점) 실패했는지를 예측하는 것입니다.
작업 공간에는 bryant_shots DataFrame으로 학습 데이터가 제공됩니다. 이 데이터에는 10,000개의 슛과 그 속성, 그리고 슛 성공 여부를 나타내는 target 변수 "shot\_made\_flag"가 포함되어 있습니다.
특성 중 하나는 "game_id"로, 해당 슛이 시도된 특정 경기를 의미합니다. 서로 다른 경기가 541개 있으므로, 높은 카디널리티의 범주형 특성을 다루게 됩니다. 이를 타깃 평균 인코딩으로 변환해 보죠!
5-fold 교차 검증을 사용하며, 로컬 검증에서 타깃 평균 인코딩된 특성을 평가하려 한다고 가정해 보세요.
이 연습은 강의의 일부입니다
Python으로 Kaggle 대회 공략하기
연습 안내
- 이를 위해 각 폴드 분할마다
"game_id"범주형 특성에 대한 인코딩 절차를 개별적으로 반복해야 합니다. 각 폴드 분할 내에서mean_target_encoding()함수 호출에 필요한 누락된 매개변수를 모두 지정하는 것이 목표예요. train과test매개변수에는 각각 학습용과 검증용 DataFrame이 들어가야 함을 기억하세요.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))