Začněte nyníZačněte zdarma

K-fold křížová validace

Budeš pracovat s problémem binární klasifikace na podvzorku z Kaggle playground soutěže. Cílem této soutěže je předpovědět, zda slavný basketbalista Kobe Bryant proměnil koš, nebo konkrétní střelu minul.

Trénovací data jsou dostupná v tvém pracovním prostoru jako DataFrame bryant_shots. Obsahuje data o 10 000 střelách s jejich vlastnostmi a cílovou proměnnou "shot\_made\_flag" -- zda byl koš proměněn, nebo ne.

Jedním z příznaků v datech je "game_id" -- konkrétní zápas, ve kterém byla střela provedena. Celkem je zde 541 různých zápasů, takže pracuješ s kategorickým příznakem s vysokou kardinalitou. Zakódujme ho pomocí cílového průměru!

Předpokládejme, že používáš 5-fold křížovou validaci a chceš vyhodnotit příznak zakódovaný průměrem cílové proměnné na lokální validaci.

Toto cvičení je součástí kurzu

Jak vyhrát soutěž na Kaggle v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Abys toho dosáhl/a, je potřeba zopakovat postup kódování pro kategorický příznak "game_id" zvlášť v rámci každého rozdělení foldu. Tvým cílem je doplnit všechny chybějící parametry volání funkce mean_target_encoding() uvnitř každého rozdělení foldu.
  • Nezapomeň, že parametry train a test očekávají trénovací a testovací DataFramy.
  • Zatímco parametry target a categorical očekávají názvy cílové proměnné a kategorického příznaku, který má být zakódován.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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))
Upravit a spustit kód