对不同长度的列执行 PCA

数据挖掘 机器学习 Python scikit-学习 熊猫 主成分分析
2022-02-25 03:51:35

我有大约 20-30 列,所有列都有不同的长度。第一列有 25000 行,第二列有 19000 行,并且所有列都不同。

都是调查数据,有 0(否)、1(是)和 666(对于缺失数据)值。我想对这些数据执行 PCA。由于每列的长度不等,由于大多数长度较短的列的“NaN”值,我很难进行 PCA。

我不希望大部分信息丢失,所以我不愿意删除较长列的行并使每一列的长度相等。

请告诉我可能的解决方案。

1个回答

根据我的理解,PCA 要求你有相同长度的列,所以你要么需要

  • 缩短较长的列(基本上只是跳过不完整的观察)或

  • 填补较短列中的空白。

如果选择第二个选项,则需要了解插补的概念(请参阅以下链接以获取参考缺失数据插补)。

请注意,在执行 PCA 之前,您需要去除数据中代表缺失响应 (666s) 的虚拟值,因为这些值是任意的(它们也可能是 9999 或 -1)并且会对结果产生重大影响。

此外,PCA 是否可以应用于二进制数据是有争议的,请参阅相关 SE 问题下的讨论。