(待完善)类别特征的编码方式

算法 专栏收录该内容
105 篇文章 6 订阅

1. 简介

由于类别变量基本无法直接被机器学习利用,需要转换成数值型变量。

以下介绍几种对类别特征进行编码的方法:

  • label encoding;
  • One-hot encoding;
  • Multi-hot encoding;
  • Vector representation;
  • 树学习器,如LightGBM,CatBoost。
  • Target encoding
  • frequency-encoding

Label encoding where you choose an arbitrary number for each category
One-hot encoding where you create one binary column per category
Vector representation a.k.a. word2vec where you find a low dimensional subspace that fits your data
Optimal binning where you rely on tree-learners such as LightGBM or CatBoost
Target encoding where you average the target value by category

2. Target encoding

Target encoding,统计类别变量的每个值对于目标y(可以是二值型或者连续型)的平均值,替代原来的数据。

import pandas as pd

df = pd.DataFrame({
    'x': ['a'] * 5 + ['b'] * 5,
    'y': [1, 1, 1, 1, 0, 1, 0, 0, 0, 0]
})
print('df', df)
# target encoder
target_dict = df.groupby('x')['y'].mean()
df['x'] = df['x'].map(target_dict)
print('new df', df)

结果:

df    x  y
0  a  1
1  a  1
2  a  1
3  a  1
4  a  0
5  b  1
6  b  0
7  b  0
8  b  0
9  b  0
new df      x  y
0  0.8  1
1  0.8  1
2  0.8  1
3  0.8  1
4  0.8  0
5  0.2  1
6  0.2  0
7  0.2  0
8  0.2  0
9  0.2  0

优点:

  • target encoding具有解释性;

缺点:

  • 容易过拟合;

解决过拟合的方法

-1. 使用交叉验证

Multi-hot

数字5,二进制是101,每一位一个维度,就变成[1,0,1]


参考:

  1. Target encoding ;
  • 2
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值