Kaggle知识点:缺失值处理方法

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

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

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

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

缺失值产生的原因

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

  • 人们不会在数据收集调查中提供有关某些问题的信息。
  • 数据是从各种可用的过去记录中积累的,而不是直接积累的。
  • 数据收集过程中的不准确也会导致数据丢失。

缺失值类型

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

完全随机缺失 (MCAR)

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

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

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

随机丢失 (MAR)

  • 现象:数据在特定子集中丢失

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

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

不随机丢失 (NMAR)

  • 现象:确实的数据遵循某种模式,且与数据样本相关。

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

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

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

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

missing_values=train.isnull().sum()

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

  • bar:统计每列缺失值的次数
  • matrix:统计缺失值和行数分布规律
  • heatmap:统计列缺失值的相关性
  • dendrogram:统计列确实的组合性

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

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

  • 从数据角度:如果某列的缺失比例大于某一阈值(如大于90%),则可以考虑剔除列;类似的对行的角度也可以这样操作。
  • 从模型角度:如果使用树模型则不用考虑处理,其他模型则需要进行填充或者剔除。

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

使用值填充

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

  • 数值列:中位数、中位数、特殊值
  • 类别列:众数、特殊值

最近邻样本填充

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

  • 向前填充
  • 向后填充
  • 前后填充

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

使用模型预测

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

  • 使用回归/分类模型预测列:使用其他列作为特征,待填充列作为标签;
  • 使用自编码器预测缺失值:使用缺失数据作为输入,完整数据作为标签,完成自监督训练。

【竞赛报名/项目咨询请加微信:mollywei007】

上一篇

USACO各级别考点/难度是?有助大学申请USACO要达到哪个级别?

下一篇

2023年IEO经济奥赛报名官网详细操作步骤!

你也可能喜欢

  • 暂无相关文章!

关注热点

返回顶部