mlab PCA 和 sklearn PCA 的区别

Posted

技术标签:

【中文标题】mlab PCA 和 sklearn PCA 的区别【英文标题】:Differences between mlab PCA and sklearn PCA 【发布时间】:2017-07-19 18:03:45 【问题描述】:

我有一组“二维”数据,我必须使用 PCA 分解对其进行研究。 作为第一步,我尝试使用 matplotlib.mlab 库:

import numpy as np
from matplotlib.mlab import PCA

data = np.loadtxt("Data.txt")
result = PCA(data)
#....

然后,我将“Data.txt”的散点图与 mlab 找到的主成分(存储在 result.Wt 中)进行了比较。结果如下: mlab attempt

如您所见,结果不是最佳的。因此,我尝试使用 sklearn.decomposition 库来做同样的事情:

import numpy as np
from sklearn.decomposition import PCA

data = np.loadtxt("Data.txt")
pca = PCA(n_components=2,whiten=True)
pca.fit(data)

这次的结果好多了:sklearn attempt

我真的没想到这两个库之间的结果会有如此大的差异。那么我的问题是:我的结果差异如此之大的可能原因是什么?

【问题讨论】:

【参考方案1】:

对于不可重现的问题 (data.txt):让我们猜猜看!

matplotlibs PCA 默认标准化数据 sklearn 的PCA 没有(而且您还激活了美白功能;您不想比较这些结果吗?)

我的猜测是,在 matplotlib 案例中,您绘制了适合标准化数据的 PCA 轴,但确实绘制了原始数据(显然没有以平均值为中心,仅作为轴上的正值)。

所以:

停用 matplotlib 的标准化 停用 sklearn 的美白功能 然后比较...

【讨论】:

以上是关于mlab PCA 和 sklearn PCA 的区别的主要内容,如果未能解决你的问题,请参考以下文章

使用 sklearn 进行 PCA 预测和错误

Sklearn PCA:列车和测试的组件数量不同

sklearn 上的 PCA - 如何解释 pca.components_

Sklearn PCA:用于训练和测试的组件数量不同

sklearn中的PCA

sklearn - PCA 的标签点