LoslegenKostenlos loslegen

K-fold-Cross-Validation

Du arbeitest an einem binären Klassifikationsproblem mit einer Teilstichprobe aus einer Kaggle-Playground-Competition. Ziel der Competition ist es, vorherzusagen, ob der berühmte Basketballspieler Kobe Bryant einen Korb erzielt oder einen bestimmten Wurf verfehlt hat.

Die Trainingsdaten stehen dir in deinem Workspace als DataFrame bryant_shots zur Verfügung. Er enthält Daten zu 10.000 Würfen mit ihren Eigenschaften und einer Zielvariable "shot\_made\_flag" – also ob der Wurf getroffen wurde oder nicht.

Eines der Merkmale in den Daten ist "game_id" – das konkrete Spiel, in dem der Wurf stattfand. Es gibt 541 verschiedene Spiele. Du hast es also mit einem kategorialen Merkmal mit hoher Kardinalität zu tun. Lass es uns mit einem Target-Mean encodieren!

Angenommen, du verwendest eine 5-fache Cross-Validation und möchtest ein mean-target-encodiertes Merkmal in der lokalen Validierung auswerten.

Diese Übung ist Teil des Kurses

Eine Kaggle-Competition in Python gewinnen

Kurs anzeigen

Anleitung zur Übung

  • Dafür musst du das Encoding-Verfahren für das kategoriale Merkmal "game_id" innerhalb jedes Fold-Splits separat wiederholen. Dein Ziel ist es, alle fehlenden Parameter für den Aufruf der Funktion mean_target_encoding() innerhalb jedes Fold-Splits anzugeben.
  • Denk daran, dass die Parameter train und test die jeweiligen Train- und Test-DataFrames erwarten.
  • Die Parameter target und categorical erwarten hingegen die Namen der Zielvariable bzw. des zu encodierenden kategorialen Merkmals.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# 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))
Code bearbeiten und ausführen