始める無料で始める

平均ターゲットエンコーディング

まずは、平均ターゲットエンコーディングを実装する関数を作成します。次の2つの手順を行う必要があることを思い出してください。

  1. 学習データで平均を計算し、それをテストデータに適用する
  2. 学習データをK分割し、各分割についてOut-of-Foldの平均を計算し、その分割に適用する

これらの手順はそれぞれ別の関数で実装します。test_mean_target_encoding()train_mean_target_encoding() です。

最終的な関数 mean_target_encoding() は、引数として学習用とテスト用のDataFrame、エンコード対象のカテゴリ列名、ターゲット列名、そしてスムージング用のパラメータalphaを取ります。戻り値は2つで、学習用とテスト用DataFrameそれぞれの新しい特徴量です。

この演習はコースの一部です

Pythonで挑むKaggleコンペティション

コースを見る

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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
コードを編集して実行