【问题标题】:Differences between mlab PCA and sklearn PCAmlab PCA 和 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

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

【问题讨论】:

    标签: python matplotlib scikit-learn pca matplotlib.mlab


    【解决方案1】:

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

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

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

    所以:

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

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 2021-03-24
      • 2019-04-03
      • 2015-09-27
      • 2020-12-22
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2021-05-08
      相关资源
      最近更新 更多