PCA在Python中缺少值

Emi*_*ily 5 python numpy pca

我正在尝试对蒙面数组进行PCA分析.据我所知,matplotlib.mlab.PCA如果原始2D矩阵缺少值,则无效.有没有人建议在Python中使用缺少值的PCA?

谢谢.

Lud*_*igH 16

插补数据会以可能使 PCA 估计产生偏差的方式扭曲结果。更好的方法是使用 PPCA 算法,它给出与 PCA 相同的结果,但在某些实现中可以更稳健地处理丢失的数据。

我找到了两个库。你有

  1. PyPI上打包PPCA,github上PCA-magic
  2. 包 PyPPCA,在 PyPI 和github上同名

由于这些软件包的维护成本较低,您可能希望自己实现它。上面的代码建立在 Tipping 和 Bishop 1999 年引用的(并且写得很好!)论文中的理论基础上。如果您需要有关如何正确实施 PPCA 的指导,可以在Tippings 主页找到它。

顺便说一句,PCAsklearn 实现实际上是基于 TippingBishop1999 的 PPCA 实现,但他们没有选择以处理缺失值的方式实现它。

编辑:上面的两个库都有问题,所以我自己不能直接使用它们。我分叉了 PyPPCA 并修复了它。在 github 上可用。


Num*_*let 5

我想你可能需要在做PCA之前对数据进行一些预处理.您可以使用:

sklearn.impute.SimpleImputer
Run Code Online (Sandbox Code Playgroud)

http://scikit-learn.org/dev/modules/generated/sklearn.preprocessing.Imputer.html#sklearn.preprocessing.Imputer

使用此功能,您可以自动替换平均值,中值或最常值的缺失值.哪个选项最好是很难说的,这取决于许多因素,例如数据的外观.

顺便说一句,您也可以使用相同的库使用PCA:

sklearn.decomposition.PCA
Run Code Online (Sandbox Code Playgroud)

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

还有许多其他统计功能和机器学习技术.