Kom igångKom igång gratis

K-fold korsvalidering

Du kommer att arbeta med ett binärt klassificeringsproblem baserat på ett urval från en Kaggle-tävling. Målet är att förutsäga om basketspelaren Kobe Bryant gjorde en poäng eller missade ett visst skott.

Träningsdata finns tillgänglig i din arbetsyta som dataramen bryant_shots. Den innehåller data om 10 000 skott med tillhörande egenskaper och en målvariabel "shot\_made\_flag" -- om skottet gick in eller inte.

Ett av särdragen i datan är "game_id" -- den specifika match där skottet gjordes. Det finns 541 unika matcher. Du arbetar alltså med ett kategoriskt särdrag med hög kardinalitet. Låt oss koda det med hjälp av ett målmedelvärde!

Anta att du använder 5-fold korsvalidering och vill utvärdera ett målmedelvärdeskodat särdrag på den lokala valideringen.

Den här övningen är en del av kursen

Vinna en Kaggle-tävling i Python

Visa kurs

Övningsinstruktioner

  • För att göra detta behöver du upprepa kodningsproceduren för det kategoriska särdragen "game_id" separat inom varje foldsplits. Ditt mål är att ange alla saknade parametrar i anropet till funktionen mean_target_encoding() inom varje foldsplits.
  • Kom ihåg att parametrarna train och test förväntar sig tränings- respektive testdataramarna.
  • Parametrarna target och categorical förväntar sig namnen på målvariabeln respektive det kategoriska särdrag som ska kodas.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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))
Redigera och kör kod