gpt4 book ai didi

python - numpy 和 sklearn PCA 返回不同的协方差向量

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:36 24 4
gpt4 key购买 nike

尝试彻底学习 PCA,但有趣的是,当我使用 numpy 和 sklearn 时,我得到了不同的协方差矩阵结果。

numpy 结果与此说明文本匹配 here但 sklearn 结果与两者不同。

为什么会这样?

d = pd.read_csv("example.txt", header=None, sep = " ")
print(d)
0 1
0 0.69 0.49
1 -1.31 -1.21
2 0.39 0.99
3 0.09 0.29
4 1.29 1.09
5 0.49 0.79
6 0.19 -0.31
7 -0.81 -0.81
8 -0.31 -0.31
9 -0.71 -1.01

Numpy 结果

print(np.cov(d, rowvar = 0))
[[ 0.61655556 0.61544444]
[ 0.61544444 0.71655556]]

sklearn 结果

from sklearn.decomposition import PCA
clf = PCA()
clf.fit(d.values)
print(clf.get_covariance())

[[ 0.5549 0.5539]
[ 0.5539 0.6449]]

最佳答案

因为对于np.cov

Default normalization is by (N - 1), where N is the number of observations given (unbiased estimate). If bias is 1, then normalization is by N.

设置bias=1,结果与PCA相同:

In [9]: np.cov(df, rowvar=0, bias=1)
Out[9]:
array([[ 0.5549, 0.5539],
[ 0.5539, 0.6449]])

关于python - numpy 和 sklearn PCA 返回不同的协方差向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33088171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com