特征工程:一行代码搞定one-hot编码

本文介绍两种one-hot编码方法。第一种方法针对字符类型的特征变量;第二种方法针对数值型特征。

1.Pandas自带的get_dummies方法

特征工程中,最为繁琐却很重要的一步就是处理字符型特征,对于字符型特征的处理,常用方式就是one-hot编码。

先来看原始数据:

做one-hot编码

df = pd.get_dummies(df)   #get_dummies对“整数特征”无变化,对“类别特征”one-hot编码

处理后的数据:

pandas自动将BusinessTravel和Department做了编码。简单易用。

 

2.自己写的一行代码

连续数值型特征往往要做分桶离散化处理,one-hot同样是常用的处理方式。下面的代码其实是学习Google的机器学习教程时摘抄下来的,简洁实用。

Income_Ranges = zip(range(1000,19000,2000),range(3000,21000,2000))
temp = df[['Attrition','MonthlyIncome']]
for r in Income_Ranges:
    temp['MonthlyIncome_%d_to_%d' % r] = temp['MonthlyIncome'].apply(lambda x: 1.0 if x >= r[0] and x < r[1] else 0.0)

首先定义好各个桶的范围。然后再做one-hot编码。效果如下:

最左边一列是原始的数据,取值范围为1900到20000之间,做完分桶离散处理后,衍生出多个特征,如上图右侧数据所示。

就是这样。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值