Aan de slagGa gratis aan de slag

K-fold cross-validatie

Je werkt aan een binaire classificatieopdracht op een subsample uit een Kaggle playground-competitie. Het doel van deze competitie is voorspellen of de beroemde basketballer Kobe Bryant een basket scoorde of een bepaalde worp miste.

Trainingsdata is in je workspace beschikbaar als de DataFrame bryant_shots. Deze bevat gegevens over 10.000 worpen met hun eigenschappen en een target-variabele "shot\_made\_flag" — of de worp gescoord is of niet.

Een van de features in de data is "game_id" — de specifieke wedstrijd waarin de worp is gedaan. Er zijn 541 verschillende wedstrijden. Je hebt dus te maken met een categorische feature met hoge cardinaliteit. Laten we die encoden met een target-gemiddelde!

Stel dat je 5-fold cross-validatie gebruikt en je een mean target-gecodeerde feature op de lokale validatie wilt evalueren.

Deze oefening maakt deel uit van de cursus

Een Kaggle-competitie winnen met Python

Cursus bekijken

Oefeninstructies

  • Om dit te doen, moet je de encodeerprocedure voor de categorische feature "game_id" binnen elke fold-split afzonderlijk herhalen. Je doel is om alle ontbrekende parameters op te geven voor de aanroep van de functie mean_target_encoding() binnen elke fold-split.
  • Onthoud dat de parameters train en test de train- en test-DataFrames verwachten.
  • Terwijl de parameters target en categorical de namen verwachten van respectievelijk de targetvariabele en de categorische feature die je wilt encoden.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren