传统机器学习——特征工程之空值处理

前言

前一篇介绍了清洗数据集中的异常值,之后便可以开始处理空值、字符型等数据类型。写在最前面,测试集和训练集最好concat一起,然后再进行数据处理。
声明:关于编程语法相关问题不会展开论述,本文只针对方法路线。

空值处理——准备

首先要知道训练集中哪些列有空值,下面代码中的full是将训练集和测试集concat到一起后的:

  1. 空值填充:
    Id列对算法没有实际意义,drop掉:
    在这里插入图片描述统计每列的空值:
    在这里插入图片描述打印出的结果如下(截图为部分结果):
    在这里插入图片描述
    记录这些有空值的列的字段名,后面针对不的数据类型进行不同的空值处理。

空值处理——字符型空值

怎样判断各样本属性的数据类型?
在这里插入图片描述
使用info()打印出各列属性,结果如下(截图为部分结果):
在这里插入图片描述
所以,针对不同类型的空值,也需要用不同的填充方法。针对字符型(上面info()结果中的object),在调用LabelEncoder.fit_transform之前必须将空值转成字符型,否则会报错。
在这里插入图片描述上面使用“None”来填充空值,也可以使用其他方法填充字符型空值,如众数:
在这里插入图片描述

空值处理——数值型空值

上一篇文章中已经介绍了有关数值型填充方法,包括0值,平均值、最值、概率估计等。
这里使用了0值平均值填充:
在这里插入图片描述

空值处理——变换

上面已经把空值处理完毕,但是字符型数据不能参与算法计算,所以需要使用sklearn中LabelEncoder()把所有字符型转成数值型(实现细节和原理自行百度):
在这里插入图片描述
对比如下:
在这里插入图片描述
上图为字符型转换之前数据,下图为使用过LabelEncoder()后的相应字段。
在这里插入图片描述
到此为止,所有样本都已经转成数值型,为了使其更符合正态分布,需要使用偏度再对数据进行处理。取出数据集中那些分布偏度大于指定阈值列,将其取对数,这样就可以更符合正太分布。
在这里插入图片描述到这里,数据处理已经基本完成,接下来就需要在原特征上进行特征选择,将在下一篇中介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值