数据挖掘实战入门(二)——特征工程

*——数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。*

特征工程算是正式开始数据挖掘的第一步,目的是尽量从原有数据中提取构造特征,以供后续算法或模型使用。特征构造的好坏,直接影响到我们最终的结果。
一、预处理
为更好的表示数据的特征,我们需要对原数据进行一些处理,包括异常值处理、缺失值处理、归一化标准化等等等等。
异常处理
对于一些明显的异常数据,比如规律分布的数据中的少数离群点,可以进行删除;对于一些长尾数据,可以进行截断,但是通常训练集中的长尾现象在测试集中同样存在,这种情况下简单的截断长尾并不能解决问题;线性回归是基于正态分布的假设前提,所以当数据是有偏分布时,往往要进行box-cox变换
缺失处理
数据中不可避免会有缺失值,若是某一项中有大量的缺失值,则该项数据一般没有太多价值,可以根据需要进行删除;也可以采用一些补全方法对缺失值做出补充;采用下面提到的数据分箱也是一种方法,将缺失值分入一个箱处理;当然,也可以不进行任何操作,因为很多模型本身就可以应对某些数据的缺失。
数据分箱
另一个很有效的操作是数据分箱(分桶),一般有等频分箱、等距分箱、卡方分箱等,通过将数据离散化,提高系统的鲁棒性,并且提高模型的表达能力。
二、特征构建
我们通常需要根据原数据构建一些有用的特征。比如针对我们的二手车数据,我们可以根据车辆的上线时间和注册时间大概算出该车已经使用了多久,显然,使用时间与二手车价格负相关;比如汽车的已行驶里程是800或900区别并不大,我们可以将这种数据离散化。
不同问题不同数据有不同的构造方法,最后我们可以根据需要选择特征使用。比如考虑特征间的相关性,结合我们对该问题的经验。
三、特征筛选
过滤式
包裹式
嵌入式
四、编码

# 对类别特征进行 OneEncoder
data = pd.get_dummies(data, columns=['model', 'brand', 'bodyType', 'fuelType',
                                     'gearbox', 'notRepairedDamage', 'power_bin'])

上述是对我们选用的特征进行one-hot编码,每个编码代表一辆车的特征,每个特征对应着该有的价格,通过这样将一个较复杂的问题变得简洁直观。
当我们构造的编码很庞大又很稀疏时,我们还可以进行降维压缩,合适的选择size,不仅能降低复杂度,还能体现相似性,起到意外的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值