我有一个包含糖尿病患者信息的数据集,如下所示:
id diabetes diet insulin lifestyle
0 No NaN NaN NaN
1 Yes Yes Yes NaN
2 No NaN NaN NaN
3 Yes NaN NaN NaN
4 Yes Yes NaN Yes
5 Yes Yes Yes Yes特征饮食,胰岛素和生活方式有很高比例的缺失数据(约95% )。因此,最初,我从我的数据集中排除了这些特性。然而,在仔细研究了这些数据后,我发现饮食、胰岛素和生活方式的数值与糖尿病的特征值有关。这是有意义的,因为糖尿病患者将被推荐治疗有关饮食,胰岛素摄入量和生活方式的改变。
经过一些阅读,我相信特征饮食,胰岛素和生活方式是缺失的随机(MAR),显然没有完全缺失在随机(MCAR)是解释的这里。
无论如何,我的问题是,这里丢失的数据的性质是否改变了我从dataset中删除这些特性的决定,因为它们丢失值的百分比很高。或者,我是否应该用"No“填充缺失的值来计算这些特性的数据,如下所示:
imputer = SimpleImputer(strategy='constant', fill_value='No')
x[:, 2:5] = imputer.fit_transform(x[:, 2:5]) 发布于 2020-07-23 14:30:45
您必须回答的第一个问题是,这些内容是否真的丢失了,或者只是简单地编码!
例如,如果这些变量“假定”只显示医生推荐的饮食、胰岛素或生活方式的改变,那么我们自然可以得出结论,任何NaN实际上都是“否”,在这种情况下,你甚至不必将数据计算出来,而是直接用"yes = 1 and NaN = 0代替。
如何区分这种情况(稀疏编码)和另一种情况:实际丢失的值?除了应用您的领域知识之外,您还应该测试以下规则是否适用:
如果是这种情况,则数据集可能是稀疏编码的,否则就会有实际丢失的值。
但是,请注意,如果这些值是实际缺失的值(例如,因为您识别了一些非糖尿病患者进行治疗的情况,或者某些病例在治疗变量中被标记为"No“),您可以假设它们是MAR,而不是MNAR。在这种情况下,我建议删除这些变量,因为如果您不知道NaN的实际含义,那么将其归为"No“或o是没有意义的。
https://datascience.stackexchange.com/questions/78192
复制相似问题