カテゴリ特徴量

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

Yauhen Babakhin

Kaggle Grandmaster

ラベルエンコーディング

ID カテゴリ特徴量
1 A
2 B
3 C
4 A
5 D
6 A
ID ラベルエンコード
1 0
2 1
3 2
4 0
5 3
6 0
Pythonで挑むKaggleコンペティション

ラベルエンコーディング

# LabelEncoder をインポート
from sklearn.preprocessing import LabelEncoder

# LabelEncoder オブジェクトを作成 le = LabelEncoder()
# カテゴリ特徴量をエンコード df['cat_encoded'] = le.fit_transform(df['cat'])
     ID   cat  cat_encoded
0     1   A    0
1     2   B    1
2     3   C    2
3     4   A    0
Pythonで挑むKaggleコンペティション

ワンホットエンコーディング

ID カテゴリ特徴量
1 A
2 B
3 C
4 A
5 D
6 A
ID Cat == A Cat == B Cat == C Cat == D
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 1 0 0 0
5 0 0 0 1
6 1 0 0 0
Pythonで挑むKaggleコンペティション

ワンホットエンコーディング

# ワンホット特徴量を作成
ohe = pd.get_dummies(df['cat'], prefix='ohe_cat')

# 元の特徴量を削除 df.drop('cat', axis=1, inplace=True)
# OHE を結合 df = pd.concat([df, ohe], axis=1)
     ID ohe_cat_A ohe_cat_B ohe_cat_C ohe_cat_D
0     1         1         0         0         0
1     2         0         1         0         0
2     3         0         0         1         0
3     4         1         0         0         0
Pythonで挑むKaggleコンペティション

2値特徴量

# 2値特徴量のDataFrame
binary_feature
      binary_feat
0     Yes
1     No
le = LabelEncoder()
binary_feature['binary_encoded'] = le.fit_transform(binary_feature['binary_feat'])
  binary_feat binary_encoded
0     Yes     1
1     No      0
Pythonで挑むKaggleコンペティション

その他のエンコーディング手法

  • Backward Difference Coding
  • BaseN
  • Binary
  • CatBoost Encoder
  • Hashing
  • Helmert Coding
  • James-Stein Encoder
  • Leave One Out
  • M-estimate
  • One Hot
  • Ordinal
  • Polynomial Coding
  • Sum Coding
  • Target Encoder
  • Weight of Evidence
Pythonで挑むKaggleコンペティション

その他のエンコーディング手法

  • Backward Difference Coding
  • BaseN
  • Binary
  • CatBoost Encoder
  • Hashing
  • Helmert Coding
  • James-Stein Encoder
  • Leave One Out
  • M-estimate
  • One Hot
  • Ordinal
  • Polynomial Coding
  • Sum Coding
  • Target Encoder
  • Weight of Evidence
Pythonで挑むKaggleコンペティション

練習しましょう!

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

Preparing Video For Download...