主要通过使用 NumPy 和 Pandas 创建协方差矩阵,下面跟随我的步骤来吧。

第 1 步:收集数据

首先,您需要收集将用于协方差矩阵的数据。

出于演示目的,让我们使用以下有关 3 个变量的数据:

A

B

C

45

38

10

37

31

15

42

26

17

35

28

21

39

33

12

步骤 2:使用 Python 获取总体协方差矩阵

若要获取总体协方差矩阵(基于 N),需要在下面的代码中将偏差设置为 True

这是使用 NumPy 派生总体协方差矩阵的 Python 代码:

import numpy as np

A = [45, 37, 42, 35, 39]
B = [38, 31, 26, 28, 33]
C = [10, 15, 17, 21, 12]

data = np.array([A, B, C])

cov_matrix = np.cov(data, bias=True)
print(cov_matrix)

运行代码,你将获得以下矩阵:

[[ 12.64   7.68  -9.6 ]
 [  7.68  17.36 -13.8 ]
 [ -9.6  -13.8   14.8 ]]

第 3 步:获取矩阵的可视化表示

您可以使用 seaborn 和 matplotlib 来直观地表示协方差矩阵。

代码:

import numpy as np
import seaborn as sn
import matplotlib.pyplot as plt

A = [45, 37, 42, 35, 39]
B = [38, 31, 26, 28, 33]
C = [10, 15, 17, 21, 12]

data = np.array([A, B, C])

cov_matrix = np.cov(data,bias=True)
sn.heatmap(cov_matrix, annot=True, fmt='g')
plt.show()

推导样本协方差矩阵

若要获取样本协方差(基于 N-1),需要在下面的代码中将偏差设置为 False

下面是基于 NumPy 的代码:

import numpy as np

A = [45, 37, 42, 35, 39]
B = [38, 31, 26, 28, 33]
C = [10, 15, 17, 21, 12]

data = np.array([A, B, C])

covMatrix = np.cov(data, bias=False)
print(covMatrix)

这是您将得到的矩阵:

[[ 15.8    9.6  -12.  ]
 [  9.6   21.7  -17.25]
 [-12.   -17.25  18.5 ]]

您还可以使用 Pandas 来获取样本协方差矩阵。

然后,您可以使用 Pandas 应用以下代码:

import pandas as pd

data = {'A': [45, 37, 42, 35, 39],
        'B': [38, 31, 26, 28, 33],
        'C': [10, 15, 17, 21, 12]
        }

df = pd.DataFrame(data)

cov_matrix = pd.DataFrame.cov(df)
print(cov_matrix)

你会得到与 NumPy 派生的相同的矩阵:

     A      B      C
A  15.8   9.60 -12.00
B   9.6  21.70 -17.25
C -12.0 -17.25  18.50

最后,您可以使用 seaborn 和 matplotlib 直观地表示协方差矩阵:

import pandas as pd
import seaborn as sn
import matplotlib.pyplot as plt

data = {'A': [45, 37, 42, 35, 39],
        'B': [38, 31, 26, 28, 33],
        'C': [10, 15, 17, 21, 12]
        }

df = pd.DataFrame(data)

cov_matrix = pd.DataFrame.cov(df)
sn.heatmap(cov_matrix, annot=True, fmt='g')
plt.show()