数据预处理之缺失值处理

缺失值产生原因

数据集中部分数据的缺失是一件很头疼的事情,不但增大了数据集的不确定性,也影响了算法的执行。缺失值产生的原因主要有以下几点:
1.有些信息暂时无法获取,或获取信息的成本过高
2.信息遗漏,即人为的原因,如收集信息不认真、忘记填写信息等
3.缺失值本身就不存在,比如单身狗的女朋友

缺失值的影响

1.数据集丢失了大量的信息
2.数据集表现出的不确定性增大,使得获取数据潜在规律的难度加大
3.包含空值的数据会使数据建模陷入混乱,导致输出不可靠

缺失值的处理方法

1.删除缺失值

应用场景:

含有大部分缺失值的属性,直接删除属性

若数据集中只有少量的缺失值,直接删除含有缺失值的行

2.忽略

嗯…忽略不管缺失值也是一种处理方法,例如对于决策树,对一个含有缺失值的特征求熵,只需在求得的熵前乘以(未缺失值的个数/所有样本个数)的系数就行。关于决策树的缺失值处理方法,将在后续博客中书写。

3.插补方法

插补方法就很灵性了,可以取均值/中位数/众数,也可以用固定值插补,还可以用临近值来填补。除了上述方法,还可以用预测方法来填补缺失值,这类方法称为插值法

插值法有拉格朗日插值法、牛顿插值法,Hermite插值、分段插值、样条插值法

下面把拉格朗日插值法、牛顿插值法做一个简单的介绍

拉格朗日插值法

拉格朗日插值是一种多项式插值方法,是利用最小次数的多项式来构建一条光滑的曲线,使曲线通过所有的已知点。
拉个朗日插值法是一种多项式的插值方法,它的思想是对于无缺失值的n个样本构建一条光滑的曲线,使曲线通过所有的n个样本点,然后将含有缺失值的样本对应的属性点x带入这条曲线,即可获得缺失值的近似值。
具体流程如下(图片来自《python数据分析与挖掘实战》):

这里写图片描述

牛顿插值法

牛顿插值法是通过求阶差商来预测缺失值的,步骤如下:

1.对无缺失值的n个样本样本求所有的阶差商公式
2.联立差商公式建立插值多项式f(x)
3.将将含有缺失值的样本对应的属性点x带入插值多项式f(x),获取近似值

具体流程如下(图片来自《python数据分析与挖掘实战》):

这里写图片描述

参考

《python数据分析与挖掘实战》