IniziaInizia gratis

K-fold cross-validation

Lavorerai su un problema di classificazione binaria usando un sottoinsieme di una competition Kaggle playground. L'obiettivo è prevedere se il famoso giocatore di basket Kobe Bryant ha segnato o sbagliato un determinato tiro.

I dati di train sono disponibili nel tuo workspace come DataFrame bryant_shots. Contiene i dati su 10.000 tiri con le loro proprietà e una variabile target "shot\_made\_flag": se il tiro è stato segnato oppure no.

Una delle feature nei dati è "game_id", ovvero la partita in cui è stato effettuato il tiro. Ci sono 541 partite distinte. Quindi stai gestendo una feature categorica ad alta cardinalità. Codifichiamola usando la media del target!

Supponi di usare una cross-validation a 5 fold e di voler valutare una feature codificata con target mean sulla validazione locale.

Questo esercizio fa parte del corso

Vincere una competizione Kaggle con Python

Visualizza il corso

Istruzioni dell'esercizio

  • Per ottenere questo risultato, devi ripetere la procedura di codifica per la feature categorica "game_id" separatamente all'interno di ciascuno split delle fold. Il tuo obiettivo è specificare tutti i parametri mancanti per la chiamata alla funzione mean_target_encoding() all'interno di ciascuno split delle fold.
  • Ricorda che i parametri train e test si aspettano i DataFrame di train e di test.
  • Mentre i parametri target e categorical si aspettano i nomi della variabile target e della feature categorica da codificare.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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))
Modifica ed esegui il codice