K-fold çapraz doğrulama
Kaggle playground yarışmasından bir alt örneklem üzerinde bir ikili sınıflandırma problemiyle çalışacaksın. Bu yarışmanın amacı, ünlü basketbolcu Kobe Bryant'ın bir atışı sayıya çevirip çevirmediğini tahmin etmektir.
Çalışma alanında bryant_shots DataFrame'i olarak train verisi mevcut. 10.000 atışın özelliklerini ve bir hedef değişkeni "shot\_made\_flag" — atışın sayı olup olmadığını — içeriyor.
Verideki özelliklerden biri "game_id" — atışın yapıldığı belirli maç. Toplam 541 farklı maç var. Yani, yüksek derecede kardinaliteye sahip bir kategorik özellikle uğraşıyorsun. Hadi bunu hedef ortalamasıyla (target mean) kodlayalım!
Diyelim ki 5 katlı çapraz doğrulama kullanıyorsun ve yerel doğrulamada ortalama hedef kodlamalı özelliği değerlendirmek istiyorsun.
Bu egzersiz, kursun bir parçasıdır
Python ile Bir Kaggle Yarışmasını Kazanmak
Egzersiz talimatları
- Bunu başarmak için, her bir katlama (fold) bölünmesi içinde
"game_id"kategorik özelliği için kodlama prosedürünü ayrı ayrı tekrarlaman gerekiyor. Amacın, her katlama bölünmesi içindemean_target_encoding()fonksiyon çağrısı için eksik tüm parametreleri belirtmek. trainvetestparametrelerinin train ve test DataFrame'lerini beklediğini unutma.targetvecategoricalparametreleri ise, sırasıyla hedef değişkenin ve kodlanacak kategorik özelliğin adlarını bekler.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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))