自动特征工程——特征编码Categorical Encoding

参考:特征编码方法
官网

在这里插入图片描述

Backward Difference Coding反向差分编码

用于编码类别变量的向后差对比编码。

原理

  • 将分类变量的一个级别的因变量的平均值与前一个相邻级别的因变量的平均值进行比较。 第一次比较将级别 2 的因变量的平均值与级别 1的因变量的平均值 进行比较。第二个比较将级别 3 的因变量平均值与 级别2 的因变量平均值比较,第三个比较 将级别4的因变量平均值与 级别3的因变量平均值比较… …依此类推。
level of variablelevel 2 vs. level 1level 3 vs. level 2level 4 vs. level 3
1-(k-1)/k-(k-2)/k-(k-3)/k
21/k-(k-2)/k-(k-3)/k
31/k2/k-(k-3)/k
41/k2/k3/k
ce.BackwardDifferenceEncoder(verbose=0, cols=None, mapping=None, 
                             drop_invariant=False, 
                             return_df=True, handle_unknown='value', 
                             handle_missing='value')

参数

  • cols
    要编码的列的列表,如果为 None,则将对所有字符串列进行编码。
  • drop_invariant
    是否删除方差为0的列
  • return_df
    是否转换后返回 pandas DataFrame(否则它将是一个 numpy 数组)。

方法

  • fit(X, y=None)
  • fit_transform(X, y=None)
  • transform(X)
import category_encoders as ce
en = ce.BackwardDifferenceEncoder(cols=['lotid'], return_df=True)
res = en.fit_transform(en_data)

原数据:

在这里插入图片描述

转换后:
在这里插入图片描述

BaseN

Base-N 编码器将类别编码为其 Base-N 表示形式的数组。以 1 为基数等效于单热编码(不是真正的以 1 为基数,但很有用),以 2 为基数等效于二进制编码。N=实际类别的数量等效于普通序数编码。

Binary二值编码

分类变量的二进制编码,类似于 onehot,但将类别存储为二进制位字符串。

CatBoost Encoder

分类特征的CatBoost编码。
CatBoost Encoder是一个基于目标的分类编码器。它是一个监督编码器,根据目标值对分类列进行编码。它支持二项式和连续目标。

  • 训练数据必须随机排列。
  • 使用类似于时间序列数据验证的原理。目标统计值依赖于观察到的历史,即当前特征的目标概率仅从它之前的行(观察值)计算。

Leave One Out

与目标编码非常相似,但在计算水平的均值目标时会排除当前行的目标,以减少异常值的影响。

Target Encoder目标编码

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值