我正在尝试对一个掩码数组进行PCA分析。据我所知,如果原始的2D矩阵存在缺失值,则
谢谢。
matplotlib.mlab.PCA
无法工作。有没有人可以推荐在Python中处理带缺失值的PCA的方法?谢谢。
matplotlib.mlab.PCA
无法工作。有没有人可以推荐在Python中处理带缺失值的PCA的方法?输入数据可能会使PCA估计结果发生偏差。更好的方法是使用PPCA算法,它可以在某些实现中更加稳健地处理缺失数据,并产生与PCA相同的结果。
我找到了两个库:
由于这些包的维护很少,您可能希望自己实现它。上面的代码基于Tipping和Bishop 1999年的论文介绍的理论构建而成。如果您想要正确实现PPCA,则可以在Tippings主页上获得指导。
顺便说一下,sklearn实现的PCA实际上是基于TippingBishop1999的PPCA实现,但他们没有选择以处理缺失值的方式实现它。
编辑:以上两个库都存在问题,我不能直接使用它们。我分支了PyPPCA并修复了漏洞。可以在github上获得。
我认为在进行PCA之前,您可能需要对数据进行一些预处理。
您可以使用:
sklearn.impute.SimpleImputer
使用此函数,您可以自动替换缺失值为平均值、中位数或最常见的值之一。哪种选项最好很难确定,这取决于许多因素,例如数据的外观。
顺便说一下,您还可以使用相同库中的 PCA:
sklearn.decomposition.PCA
http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
还有许多其他的统计函数和机器学习技术。