Zacznij terazZacznij za darmo

Walidacja krzyżowa k-fold

Będziesz pracować z problemem klasyfikacji binarnej na podzbiorze danych z zawodów Kaggle Playground. Celem tych zawodów jest przewidzenie, czy słynny koszykarz Kobe Bryant trafił do kosza, czy chybił przy danym rzucie.

Dane treningowe są dostępne w twoim środowisku jako ramka danych bryant_shots. Zawiera ona informacje o 10 000 rzutach wraz z ich właściwościami oraz zmienną docelową "shot\_made\_flag" -- określającą, czy rzut trafił do kosza.

Jedną z cech w zbiorze danych jest "game_id" -- identyfikator konkretnego meczu, podczas którego wykonano rzut. W zbiorze znajdują się 543 różne mecze, co oznacza, że masz do czynienia z cechą kategoryczną o wysokiej kardynalności. Zakodujmy ją za pomocą średniej docelowej!

Załóżmy, że stosujesz 5-krotną walidację krzyżową i chcesz ocenić cechę zakodowaną metodą średniej docelowej na lokalnym zbiorze walidacyjnym.

To ćwiczenie jest częścią kursu

Zwycięstwo w konkursie Kaggle w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Aby to osiągnąć, należy przeprowadzić procedurę kodowania cechy kategorycznej "game_id" osobno dla każdego podziału na foldy. Twoim celem jest uzupełnienie wszystkich brakujących parametrów w wywołaniu funkcji mean_target_encoding() wewnątrz każdego podziału.
  • Pamiętaj, że parametry train i test przyjmują odpowiednio treningową i testową ramkę danych.
  • Natomiast parametry target i categorical przyjmują nazwy zmiennej docelowej oraz cechy kategorycznej, która ma zostać zakodowana.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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))
Edytuj i uruchom kod