如何处理 Python 中应该缺失的缺失值(不应插入 NaN)?
Posted
技术标签:
【中文标题】如何处理 Python 中应该缺失的缺失值(不应插入 NaN)?【英文标题】:How to handle missing values in Python that are supposed to be missing (NaNs shouldn't be interpolated)? 【发布时间】:2020-08-22 00:34:23 【问题描述】:我正在开展一个项目,以根据许多变量来模拟一个人的幸福感变化。
大多数解释变量是每天(他们吃了多少食物、每天运动、睡眠等),但其中一些是每周 - 他们应该是每周,并且对预测变量有一次影响周。
例如,每周变量之一是一个人在每周同一天称体重时的体重变化。
此数据每周仅提供一次,并且会影响人们当天的幸福感。
在这种情况下,有人可以告诉我如何在没有可用于每周变量的数据的日子里处理 python 中的缺失数据吗?
推断缺失天数的数据是错误的,因为人们的幸福感根本不受这些每周变量在不可用天数的影响。
我创建了一个虚拟变量,当每周数据可用时为 1,否则为 0,但我不知道如何处理丢失的数据。我不能离开 NaN,否则 python 不会运行回归,但我不能输入 0,因为有时数据可用当天的实际变量值(例如:体重变化)可能是 0。
【问题讨论】:
【参考方案1】:SciKit-learn 提供了称为 Imputers 的类,这些类通过遵循用户定义的策略(即使用默认值、使用列的平均值......)来处理缺失值。如果您不想扭曲训练,我建议您使用统计数据而不是任意默认值。
此外,您可以使用MissingIndicator 存储有关哪些值已估算以及哪些值是有机值的信息。
您可以通过SciKit-Learn documentation 中的一些示例代码了解更多关于不同 Imputer 的信息
【讨论】:
感谢 Rayan,正如我在问题中解释的那样,这不是缺失值的经典案例。我不能使用列的平均值或类似的东西,否则模型会在这些输入值和预测变量之间绘制关系。仅每周一次,人们才知道体重变化,因此会影响他们的幸福感。没有其他日子。我昨天在这个问题上找了几个小时,所有为缺失值提供的解决方案——通过对可用数据的插补——都会弄乱我的模型。我也尝试过使用面具,但它并没有用“其他东西”改变 nans。【参考方案2】:解决此问题的一种方法:
用最后一个值(在本例中为测量重量)填写 NaN
添加一个布尔变量“今天可用的值”(已按照问题中的说明完成)
再添加一个变量:(最后一个可用值/以前的值)*“今天可用的值”。
警告:对线性回归算法进行产品建模可能有点困难。
【讨论】:
以上是关于如何处理 Python 中应该缺失的缺失值(不应插入 NaN)?的主要内容,如果未能解决你的问题,请参考以下文章