0

我有一组“二维”数据,我必须使用 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 尝试

如您所见,结果不是最佳的。因此,我尝试使用 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 尝试

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

4

1 回答 1

3

与不可重复的问题一样(data.txt):让我们猜猜!

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

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

所以:

  • 停用 matplotlib 的标准化
  • 停用sklearn的美白功能
  • 并比较...
于 2017-02-28T17:28:14.460 回答