BaşlayınÜcretsiz başlayın

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

Kursa Göz Atın

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çinde mean_target_encoding() fonksiyon çağrısı için eksik tüm parametreleri belirtmek.
  • train ve test parametrelerinin train ve test DataFrame'lerini beklediğini unutma.
  • target ve categorical parametreleri 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))
Kodu Düzenle ve Çalıştır