【数据挖掘】缺失值处理方法

在进行数据挖掘的过程中,理解和清洗数据是最耗费时间的事情。你应该知道数据是如何产生的,哪些特征对业务有影响,只有这样你才能给出最好的数据结果。

在本文中,我们将介绍缺失值的产生原因和缺失值具体的处理方法。

问题1:为什么有缺失值?

现实世界中的数据在大多数情况下都有很多缺失的数据。每个值丢失的原因可能不同。可能有数据丢失或损坏,或者也可能有特定原因。

缺失值产生的原因

数据丢失背后的一些可能原因(产生过程、传输过程、存储过程):

  • 人们不会在数据收集调查中提供有关某些问题的信息。

  • 数据是从各种可用的过去记录中积累的,而不是直接积累的。

  • 数据收集过程中的不准确也会导致数据丢失。

缺失值类型

数据丢失的原因多种多样,但整体可以将它们分为三个主要组:完全随机丢失、随机丢失、不随机丢失。

完全随机缺失 (MCAR)
  • 现象:缺失的数据不遵循任何特定模式,它们只是随机的。

  • 特点:不可能用其余的变量数据来预测这些值,数据的缺失与其余变量无关或独立。

  • 案例:如在数据收集过程中,由于粗心大意丢失了特定样本

随机丢失 (MAR)
  • 现象:数据在特定子集中丢失

  • 特点:可以借助其他功能来预测数据是否存在/不存在,无法自己预测丢失的数据。

  • 案例:如在数据收集过程中,有一些默认选项,可以不做填写

不随机丢失 (NMAR)
  • 现象:确实的数据遵循某种模式,且与数据样本相关。

  • 特点:删除行/列、插补等常用方法将不起作用,缺失的数据与字段相关。

  • 案例:如在数据收集中,采集者根据字段来选择填写某些字段。

问题2:如何分析缺失值?

在Pandas中可以很方便的使用isnull函数来计算是否包含缺失值。

missing_values=train.isnull().sum()

同时也可以使用missingno库来查看缺失值的分布规律:

  • bar:统计每列缺失值的次数

  • matrix:统计缺失值和行数分布规律

  • heatmap:统计列缺失值的相关性

  • dendrogram:统计列确实的组合性

问题3:缺失值需要处理吗?

处理缺失值可以从两个角度考虑:

  • 从数据角度:如果某列的缺失比例大于某一阈值(如大于90%),则可以考虑剔除列;类似的对行的角度也可以这样操作。

  • 从模型角度:如果使用树模型则不用考虑处理,其他模型则需要进行填充或者剔除。

问题4:缺失值如何填充?

使用值填充

使用特殊值填充是最简单的填充方法,主要的优势是速度,可能会带来一定的噪音。

  • 数值列:中位数、中位数、特殊值

  • 类别列:众数、特殊值

最近邻样本填充

如果数据集的行按照日期维度进行组织,则可以考虑使用时序信息完成填充:

  • 向前填充

  • 向后填充

  • 前后填充

如果数据集的行没有时序信息,使用KNN模型可以选择最近邻的样本,然后从样本的维度完成填充。

使用模型预测

数据样本各列之间存在联系,此时可以从列与列的关系完成缺失值填充。

  • 使用回归/分类模型预测列:使用其他列作为特征,待填充列作为标签;

  • 使用自编码器预测缺失值:使用缺失数据作为输入,完整数据作为标签,完成自监督训练。

 
 

65a467279182c34d8707f2a08ec7fd5d.jpeg

 
 
 
 
 
 
 
 
往期精彩回顾




适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值