我有连续变量(天气特征),缺少MNAR类型的值(一个不同的分布,有和没有缺失的值)。我了解到,这些变量应该通过添加一个“缺失”类别来转换为分类。在这种情况下,填充case /中位数/模式不是一种选择(虽然我在不同的项目中看到,尽管存在MNAR值,但有些人仍然用均值/中位数来计算它们,这与我所了解的情况相反)。
例如:包含MNAR缺失值的云覆盖特性被转换为具有以下子类的分类特性:“非常高”、“高”、“中等”、“低”、“非常低”、“失踪”:

我想检查季节性和趋势(时间序列数据)并将这些特性添加到数据集中,但是当我在转换变量之前检查它时,它只会给出更多缺少值的变量,从而导致同样的MNAR问题。
import statsmodels.api as sm
df.set_index('timestamp', inplace=True)
analysis = df[['cloud_coverage']].dropna().copy()
s = sm.tsa.seasonal_decompose(analysis, period=30)
df['trend_cloud_coverage'] = s.trend
df['seasonal_cloud_coverage'] = s.seasonal
df['residual_cloud_coverage'] = s.resid所有这3个新特性都包含与cloud_coverage特性中缺失值相对应的缺失值。
在时间序列很重要的情况下,我如何处理丢失的值?
谢谢你们的帮助。
发布于 2022-08-04 09:08:32
我不知道哪一个是你的具体问题。
不过,我建议您使用KNNImputer。此函数将使用knn算法更改“缺失值”。这意味着它将输入集中在其他类似样本上的值。
要做到这一点,您可能首先要LabelEncoder您的列保持NaN (因为您的值是序号的,所以没有问题)。然后应用KNNImputer。
如果您只想获得没有十进制的输入值,请将邻居的数目设置为1。
https://datascience.stackexchange.com/questions/113238
复制相似问题