ÎncepețiÎncepe gratuit

Validare încrucișată K-fold

Vei lucra cu o problemă de clasificare binară pe un eșantion dintr-o competiție Kaggle playground. Obiectivul acestei competiții este să prezici dacă celebrul jucător de baschet Kobe Bryant a marcat sau a ratat un anumit șut.

Datele de antrenament sunt disponibile în spațiul tău de lucru sub forma DataFrame-ului bryant_shots. Acesta conține date despre 10.000 de șuturi, cu proprietățile lor și variabila țintă "shot\_made\_flag" -- dacă șutul a fost marcat sau nu.

Una dintre caracteristici este "game_id" -- meciul specific în care a fost efectuat șutul. Există 541 de meciuri distincte, ceea ce înseamnă că ai de-a face cu o caracteristică categorială cu cardinalitate ridicată. Hai să o codificăm folosind media țintei!

Să presupunem că folosești validare încrucișată cu 5 fold-uri și vrei să evaluezi o caracteristică codificată prin media țintei pe validarea locală.

Acest exercițiu face parte din cursul

Câștigarea unei competiții Kaggle în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Pentru a realiza acest lucru, trebuie să repeți procedura de codificare pentru caracteristica categorială "game_id" în interiorul fiecărei împărțiri pe fold, separat. Scopul tău este să specifici toți parametrii lipsă pentru apelul funcției mean_target_encoding() din interiorul fiecărei împărțiri pe fold.
  • Reamintește-ți că parametrii train și test așteaptă DataFrame-urile de antrenament și testare.
  • În timp ce parametrii target și categorical așteaptă numele variabilei țintă, respectiv al caracteristicii categoriale care urmează să fie codificate.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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))
Editează și rulează codul