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

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

1.Pandas自带的get_dummies方法

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

先来看原始数据:

特征工程:一行代码搞定one-hot编码_第1张图片

做one-hot编码

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

处理后的数据:

特征工程:一行代码搞定one-hot编码_第2张图片

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编码。效果如下:

特征工程:一行代码搞定one-hot编码_第3张图片

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

就是这样。

 

你可能感兴趣的:(Pandas技巧,Pandas,特征工程)