Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么是numpy';s协方差与手动计算略有不同?_Python_Numpy - Fatal编程技术网

Python 为什么是numpy';s协方差与手动计算略有不同?

Python 为什么是numpy';s协方差与手动计算略有不同?,python,numpy,Python,Numpy,我只是好奇,我想问这个问题。为什么当我手动计算一组数据的协方差矩阵时,我的值与numpy的值略有不同 我有两组数据X和Y data = io.loadmat("datafile.mat")['data'] X = data[:,0] Y = data[:,1] 协方差矩阵可以这样计算(通过查看X和X、X和Y、Y和X等之间的相关性) 对于我的数据集,这给了我: array([[ 1.722105 , 5.34104265], [ 5.34104265, 17.72717759]])

我只是好奇,我想问这个问题。为什么当我手动计算一组数据的协方差矩阵时,我的值与numpy的值略有不同

我有两组数据
X
Y

data = io.loadmat("datafile.mat")['data']
X = data[:,0]
Y = data[:,1]
协方差矩阵可以这样计算(通过查看X和X、X和Y、Y和X等之间的相关性)

对于我的数据集,这给了我:

array([[ 1.722105  ,  5.34104265],
   [ 5.34104265, 17.72717759]])
而使用numpy的协方差函数
convariance=np.cov(X,Y)
给了我

array([[  1.7395    ,   5.39499258],
   [  5.39499258,  17.90623999]]) 

类似,但不完全相同…

默认情况下
np.cov
计算无偏协方差,它使用因子
(N-1)
而不是您计算的
N

如果查看文档,您会发现有一个参数(
偏差
)可从协方差的偏差或无偏差版本中进行选择。默认情况下,它设置为
false


如果您有兴趣,可以阅读更多关于在中使用不同前置因子背后的问题。

尝试一件事,添加
bias=True
作为
np.cov
的参数,然后再次比较。当然-现在给出完全相同的答案。怎么了?很好!你可以阅读这篇文章,但它归结为一个事实,你有一个样本,而不是整个人口,这就是为什么有这个额外的修正系数。对。你刚刚链接了文档?没有看到文章。呸,我搞砸了链接。。尽快更正,无论如何你可以而且应该至少查阅维基百科;)应该是
(N-1)
而不是
(N+1)
array([[  1.7395    ,   5.39499258],
   [  5.39499258,  17.90623999]])