MulaiMulai sekarang secara gratis

K-fold cross-validation

Anda akan mengerjakan masalah klasifikasi biner pada subset dari kompetisi Kaggle playground. Tujuan kompetisi ini adalah memprediksi apakah pemain basket terkenal, Kobe Bryant, berhasil mencetak poin atau gagal pada sebuah percobaan tembakan tertentu.

Data latih tersedia di workspace Anda sebagai DataFrame bryant_shots. Data ini berisi informasi tentang 10.000 tembakan beserta propertinya dan variabel target "shot\_made\_flag" — apakah tembakan tersebut masuk atau tidak.

Salah satu fitur dalam data adalah "game_id" — pertandingan tertentu saat tembakan dilakukan. Terdapat 541 pertandingan yang berbeda. Jadi, Anda berurusan dengan fitur kategorikal berkardinalitas tinggi. Mari kita lakukan encoding menggunakan target mean!

Misalkan Anda menggunakan 5-fold cross-validation dan ingin mengevaluasi fitur hasil target mean encoding pada validasi lokal.

Latihan ini adalah bagian dari kursus

Memenangi Kompetisi Kaggle dengan Python

Lihat Kursus

Petunjuk latihan

  • Untuk mencapainya, Anda perlu mengulangi prosedur encoding untuk fitur kategorikal "game_id" secara terpisah di dalam tiap pemisahan fold. Tujuan Anda adalah melengkapi semua parameter yang belum diisi pada pemanggilan fungsi mean_target_encoding() di dalam tiap pemisahan fold.
  • Ingat bahwa parameter train dan test mengharapkan DataFrame train dan test.
  • Sementara parameter target dan categorical mengharapkan nama variabel target dan fitur kategorikal yang akan di-encode.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

# 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))
Edit dan Jalankan Kode