Mean target encoding
Nejdřív vytvoříš funkci, která implementuje mean target encoding. Budeš potřebovat dva následující kroky:
- Vypočítej průměr na trénovacích datech a aplikuj ho na testovací data
- Rozděl trénovací data na K foldů. Pro každý fold vypočítej out-of-fold průměr a aplikuj ho na daný fold
Každý z těchto kroků bude implementován v samostatné funkci: test_mean_target_encoding() a train_mean_target_encoding().
Finální funkce mean_target_encoding() přijímá jako argumenty: trénovací a testovací DataFramy, název kategorického sloupce, který má být zakódován, název cílového sloupce a vyhlazovací parametr alpha. Vrací dvě hodnoty: nový příznak pro trénovací a testovací DataFrame.
Toto cvičení je součástí kurzu
Jak vyhrát soutěž na Kaggle v Pythonu
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
def test_mean_target_encoding(train, test, target, categorical, alpha=5):
# Calculate global mean on the train data
global_mean = train[target].mean()
# Group by the categorical feature and calculate its properties
train_groups = train.groupby(categorical)
category_sum = train_groups[target].sum()
category_size = train_groups.size()
# Calculate smoothed mean target statistics
train_statistics = (category_sum + global_mean * alpha) / (category_size + ____)
# Apply statistics to the test data and fill new categories
test_feature = test[categorical].map(train_statistics).fillna(____)
return test_feature.values