Python 处理缺少的值:大多数列(重要列)缺少99%的数据时

Python 处理缺少的值:大多数列(重要列)缺少99%的数据时,python,machine-learning,data-science,data-analysis,data-cleaning,Python,Machine Learning,Data Science,Data Analysis,Data Cleaning,我的一个项目让我左右为难。很少有变量没有足够的数据,这意味着几乎99%的数据观测丢失 我在考虑两个选择- 用均值/knn插补法插补缺失值 用0填充缺失值 我想不出这个方向的任何东西。如果有人能帮忙,那就太好了 另外,当99%的数据缺失时,我对使用均值插补感到不舒服。有人有这样的理由吗?请让我知道 数据中有397576个观测值,以下为缺失值 99%的数据丢失!!!??? 嗯,如果您的数据集的示例少于100000个,那么您可能希望删除这些列,而不是通过任何方法进行插补。 如果你有一个更大的数据集

我的一个项目让我左右为难。很少有变量没有足够的数据,这意味着几乎99%的数据观测丢失

我在考虑两个选择-

  • 用均值/knn插补法插补缺失值

  • 用0填充缺失值

我想不出这个方向的任何东西。如果有人能帮忙,那就太好了

另外,当99%的数据缺失时,我对使用均值插补感到不舒服。有人有这样的理由吗?请让我知道

数据中有397576个观测值,以下为缺失值
99%的数据丢失!!!??? 嗯,如果您的数据集的示例少于100000个,那么您可能希望删除这些列,而不是通过任何方法进行插补。 如果你有一个更大的数据集,那么使用均值插补或knn插补就可以了。这些方法无法捕获数据的统计信息,并且会占用内存。取而代之的是使用机器学习的贝叶斯方法,比如通过数据拟合高斯过程,或者对这些稀疏列使用可变自动编码器。
1.)这里有几个链接,可以学习并使用高斯过程从数据集中采样缺失值:
?

2.)您也可以使用VAE来插补缺失的值


我希望这有帮助

我要给出一个好答案的第一个问题是:

您实际要用已完成的数据归档什么

。 人们出于不同的原因插补数据,用例会产生很大的差异,例如,您可以使用插补:

  • 训练机器学习模型的预处理步骤
  • 解决方案是拥有一个没有间隙的漂亮图形/绘图
  • 用于评估科学或医学研究的统计推断工具
  • 99%的缺失数据是非常多的——在大多数情况下,你可以预期,这不会产生任何有意义的结果

    对于某些变量来说,它可能仍然是有意义的,并且至少会产生一些有意义的东西——但是你必须小心处理,并且对你的解决方案考虑很多

    一般来说,你可以说,插补并不是凭空创建条目的。模式必须存在于现有数据中,然后应用于缺少的数据。 你可能必须在可变的基础上决定什么是有意义的

    以您的可变电子邮件为例:
    根据您的数据的方式-可能每一行代表一个具有特定电子邮件地址的不同客户。所以每一行都应该是唯一的邮件地址。在这种情况下,插补没有任何好处——算法应该如何猜测电子邮件。但是如果数据结构不同,客户出现在多行中,那么算法仍然可以填充一些有意义的数据。看到客户编号4始终具有相同的邮件地址,并将其填入仅给出客户编号4且邮件丢失的行。

    我有397536条观察结果。对于大多数数据列,缺少的观测值约为394500。因此,如果我使用任何插补方法,我将使用从1%数据中收集的平均值插补99%的数据。我将查看这些链接。感谢您的帮助。我还在原始问题中添加了缺失值的摘要,供您参考。您的大部分数据缺失,因此无法删除列。我强烈建议使用VAE来估算缺失值。Hese是一个执行的VAE-