mlab PCA和sklearn PCA之间的差异

时间:2017-02-28 16:45:32

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

我有一套" 2维"我必须使用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 个答案:

答案 0 :(得分:1)

一如既往地提出不可复制的问题(<?php $test=mysql_query("SELECT * FROM siteler"); $sayi=mysql_num_rows($test); $deneme=mysql_fetch_row($test); ?> <div class='container'> <div class='row'> <?php while ($deneme=mysql_fetch_assoc($test)) { extract($deneme); echo "<div class='col-md-3 col-sm-6 col-xs-12 back-colour'> <p>$site_name </p> <p>$site_info </p> <p>$site_ref </p> <p>$bet_turu </p> </div>"; } ?> </div> </div> ):让我们猜猜!

  • matplotlibs PCA默认标准化数据
  • sklearn&#39; PCA没有(你也激活了美白;你不想比较这些结果吗?)

我在这里猜测,在matplotlib的情况下,你绘制的PCA轴是标准数据,但确实绘制了原始数据(显然不是以平均值为中心,仅作为轴上的正值)。 / p>

所以:

  • 停用matplotlib的标准化
  • 停用sklearn的美白
  • 并比较......