构建用于计算协方差的函数

Jan*_*ora 11 python numpy covariance scipy

有没有一种方法可以在python中获得给定均值和样本数据点的协方差矩阵

例:

mean = [3 3.6]
data = [[1 2]
        [2 3]
        [3 3]
        [4 5] 
        [5 5]]
Run Code Online (Sandbox Code Playgroud)

我知道如何通过在公式中替换这些值来计算相同的值.但是在python中是否有一个内置函数可以为我做这个.我知道Matlab中有一个,但我不确定python.

NPE*_*NPE 22

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]])
Run Code Online (Sandbox Code Playgroud)

默认情况下,np.cov()期望每一行代表一个变量,并在列中显示.因此,我必须转置你的矩阵(通过使用.T).

实现相同目标的另一种方法是设置rowvarFalse:

In [15]: np.cov(data, rowvar=False)
Out[15]: 
array([[ 2.5,  2. ],
       [ 2. ,  1.8]])
Run Code Online (Sandbox Code Playgroud)