시작하기무료로 시작하기

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() 함수 호출에 필요한 누락된 매개변수를 모두 지정하는 것이 목표예요.
  • traintest 매개변수에는 각각 학습용과 검증용 DataFrame이 들어가야 함을 기억하세요.
  • targetcategorical 매개변수에는 각각 타깃 변수명과 인코딩할 범주형 특성명을 전달해야 합니다.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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))
코드 편집 및 실행