【问题标题】:How to handle missing values in Python that are supposed to be missing (NaNs shouldn't be interpolated)?如何处理 Python 中应该缺失的缺失值(不应插入 NaN)?
【发布时间】:2020-08-22 00:34:23
【问题描述】:

我正在开展一个项目,以根据许多变量来模拟一个人的幸福感变化。

大多数解释变量是每天(他们吃了多少食物、每天运动、睡眠等),但其中一些是每周 - 他们应该是每周,并且对预测变量有一次影响周。

例如,每周变量之一是一个人在每周同一天称体重时的体重变化。

此数据每周仅提供一次,并且会影响人们当天的幸福感。

在这种情况下,有人可以告诉我如何在没有可用于每周变量的数据的日子里处理 python 中的缺失数据吗?

推断缺失天数的数据是错误的,因为人们的幸福感根本不受这些每周变量在不可用天数的影响。

我创建了一个虚拟变量,当每周数据可用时为 1,否则为 0,但我不知道如何处理丢失的数据。我不能离开 NaN,否则 python 不会运行回归,但我不能输入 0,因为有时数据可用当天的实际变量值(例如:体重变化)可能是 0。

【问题讨论】:

    标签: python scikit-learn regression nan missing-data


    【解决方案1】:

    SciKit-learn 提供了称为 Imputers 的类,这些类通过遵循用户定义的策略(即使用默认值、使用列的平均值......)来处理缺失值。如果您不想扭曲训练,我建议您使用统计数据而不是任意默认值。

    此外,您可以使用MissingIndicator 存储有关哪些值已估算以及哪些值是有机值的信息。

    您可以通过SciKit-Learn documentation 中的一些示例代码了解更多关于不同 Imputer 的信息

    【讨论】:

    • 感谢 Rayan,正如我在问题中解释的那样,这不是缺失值的经典案例。我不能使用列的平均值或类似的东西,否则模型会在这些输入值和预测变量之间绘制关系。仅每周一次,人们才知道体重变化,因此会影响他们的幸福感。没有其他日子。我昨天在这个问题上找了几个小时,所有为缺失值提供的解决方案——通过对可用数据的插补——都会弄乱我的模型。我也尝试过使用面具,但它并没有用“其他东西”改变 nans。
    【解决方案2】:

    解决此问题的一种方法:

    • 用最后一个值(在本例中为测量重量)填写 NaN

    • 添加一个布尔变量“今天可用的值”(已按照问题中的说明完成)

    • 再添加一个变量:(最后一个可用值/以前的值)*“今天可用的值”。

    警告:对线性回归算法进行产品建模可能有点困难。

    【讨论】:

      猜你喜欢
      • 2019-08-12
      • 2013-07-31
      • 2016-07-04
      • 2016-10-06
      • 2017-01-15
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 2015-12-22
      相关资源
      最近更新 更多