python中有没有办法在给定均值和样本数据点的情况下获得协方差矩阵
例子:
mean = [3 3.6]
data = [[1 2]
[2 3]
[3 3]
[4 5]
[5 5]]
我知道如何通过在公式中代入这些值来计算相同值。但是在 python 中是否有一个内置函数可以为我做这个。我知道在 Matlab 中有一个,但我不确定 python。
最佳答案
numpy.cov()
可用于计算协方差矩阵:
In [1]: import numpy as np
In [2]: data = np.array([[1,2], [2,3], [3,3], [4,5], [5,5]])
In [3]: np.cov(data.T)
Out[3]:
array([[ 2.5, 2. ],
[ 2. , 1.8]])
默认情况下,np.cov()
期望每一行代表一个变量,在列中包含观察值。因此,我不得不转置您的矩阵(通过使用 .T
)。
实现相同目的的另一种方法是将 rowvar
设置为 False
:
In [15]: np.cov(data, rowvar=False)
Out[15]:
array([[ 2.5, 2. ],
[ 2. , 1.8]])
关于python - 内置计算协方差的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9923267/