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
Ö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 funktionenmean_target_encoding()inom varje foldsplits. - Kom ihåg att parametrarna
trainochtestförväntar sig tränings- respektive testdataramarna. - Parametrarna
targetochcategoricalfö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))