如何处理归纳没有意义的NaN值? (对于PCA)

问题描述 投票:2回答:2

我很难弄清楚如何处理数据插补没有意义的NaN变量。我正在尝试进行文本/文档聚类,并且有一些缺失值需要保持缺失,因为没有合理的方法来填充它们。我的数据集包含一些数值,日期,文本等。实际上DannyDannyDannyexample在副标题下“当插补没有意义时考虑情感。”是我的问题的一个很好的例子。在矢量化之后,我需要执行PCA来降低维数,这样我就可以处理没有内存错误的大数据并减少计算时间。这就是问题开始的地方,因为scikit-learn的PCA算法都不能处理NaN(或者它们可以吗?)。使用sklearn.preprocessing.Imputer填充缺失值没有意义,因为;

- 所有这些都是数值或连续值。事实上,有一些有和没有日期的列!

- 其中一些必须保留为NaN,否则它们可能(或可能?)对群集产生不良影响。

而且我不能简单地删除列(或行),因为只有几个缺失值。太松散......我的问题是:

  1. 如何处理不影响聚类结果的NaN值? (一个明智的数据插补或其他...)
  2. 是否有任何PCA算法可以处理python中的NaN值?

PS:抱歉我的英语不好

cluster-analysis nan pca imputation
2个回答
2
投票

直觉上,如果你不能使用不同的方法来判断,或者它没有意义,那么你会丢弃那些行 - >但是请注意,你可能最终会得到不多的行,具体取决于你的数据。这仅适用于具有非常小的NaN百分比的其他良好数据集的情况。

另一种方法是丢弃具有非常高NaN的色谱柱,此时它们对模型无用。

您可以研究的最后一种方法是用极端的东西填充这些值,不在该列的范围内,像'-9999'这样的唯一标识符或您喜欢的东西。这将主要允许算法拾取异常值而不将其纳入模型。

希望这可以帮助!


1
投票

没有。

PCA意味着基本上每个输出变量在某种程度上取决于每个输入变量。因此,在投影之后,整个矢量将变为NaN。直观地说,一个缺失的值(你不能把它归结为0)意味着有一些方向你可以随意移动你的观点。但是因为你仍然可以移动这一点,你不知道它在任何坐标中的位置 - 它可能在任何地方。

PCA对低维连续数据有意义。您对数据的描述听起来并不像PCA适合在此处使用。

© www.soinside.com 2019 - 2024. All rights reserved.