統計変換手法
1. 対数変換
対数変換はデータの分布を正規分布に近づける効果があり、特に右裾が長い分布に有効です。
# Python実装例
import numpy as np
df['log_income'] = np.log1p(df['income'])
2. Box-Cox変換
正規分布に近づけるためのパラメトリックな変換手法です。
# Python実装例
from scipy import stats
transformed, lambda_val = stats.boxcox(df['value'] + 1)
カテゴリ特徴量のエンコーディング
1. ラベルエンコーディング
カテゴリ値を数値にマッピングしますが、順序関係が生じる可能性があります。
# Python実装例
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
df['category_encoded'] = le.fit_transform(df['category'])
2. ワンホットエンコーディング
各カテゴリをバイナリ特徴量として表現します。
# Python実装例
pd.get_dummies(df, columns=['category'])
3. ターゲットエンコーディング
カテゴリごとの目的変数の平均値を使用してエンコーディングします。
# Python実装例
target_mean = df.groupby('category')['target'].mean()
df['category_encoded'] = df['category'].map(target_mean)
4. 頻度エンコーディング
カテゴリの出現頻度を使用してエンコーディングします。
# Python実装例
freq = df['category'].value_counts(normalize=True)
df['category_encoded'] = df['category'].map(freq)