分类特征

用 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 竞赛

独热编码(One-Hot)

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 竞赛

独热编码(One-Hot)

# 创建独热编码特征
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 竞赛

二元特征

# 含二元特征的 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)
  • BaseN
  • 二进制编码(Binary)
  • CatBoost 编码器
  • 哈希编码(Hashing)
  • Helmert 编码
  • James–Stein 编码器
  • 留一法(Leave-One-Out)
  • M-估计
  • 独热编码(One-Hot)
  • 序数编码(Ordinal)
  • 多项式编码
  • 和编码(Sum Coding)
  • 目标编码(Target Encoder)
  • 证据权重(Weight of Evidence)
用 Python 赢下 Kaggle 竞赛

其他编码方法

  • 反差编码(Backward Difference)
  • BaseN
  • 二进制编码(Binary)
  • CatBoost 编码器
  • 哈希编码(Hashing)
  • Helmert 编码
  • James–Stein 编码器
  • 留一法(Leave-One-Out)
  • M-估计
  • 独热编码(One-Hot)
  • 序数编码(Ordinal)
  • 多项式编码
  • 和编码(Sum Coding)
  • 目标编码(Target Encoder)
  • 证据权重(Weight of Evidence)
用 Python 赢下 Kaggle 竞赛

¡Vamos a practicar!

用 Python 赢下 Kaggle 竞赛

Preparing Video For Download...