Encodarea prin media țintei
Mai întâi, vei crea o funcție care implementează encodarea prin media țintei. Reține că trebuie să dezvolți următorii doi pași:
- Calculează media pe setul de antrenament și aplică-o pe setul de testare
- Împarte setul de antrenament în K fold-uri. Calculează media out-of-fold pentru fiecare fold și aplică-o acelui fold
Fiecare dintre acești pași va fi implementat într-o funcție separată: test_mean_target_encoding() și, respectiv, train_mean_target_encoding().
Funcția finală mean_target_encoding() primește ca argumente: DataFrame-urile de antrenament și de testare, numele coloanei categoriale de encodat, numele coloanei țintă și un parametru de netezire alpha. Returnează două valori: câte o caracteristică nouă pentru DataFrame-ul de antrenament și, respectiv, pentru cel de testare.
Acest exercițiu face parte din cursul
Câștigarea unei competiții Kaggle în Python
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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