import numpy as np
X=np.random.randint(0,100,size=(5,5))
X
# 计算协方差时,根据列来进行计算
# 协方差矩阵
# 样本,分母:n - 1
np.cov(X,rowvar=False)
# ddof相当于样本方差的自由度(n-1)
np.var(X[:,0],ddof=1)
np.var(X[:,0],ddof=1)
((X[:,0] - X[:,0].mean())**2).sum()/(5-1)
np.cov(X[:,0],X[:,1])
# 协方差公式
X
((X[:,0] - X[:,0].mean()) * (X[:,1] - X[:,1].mean())).sum()/(5 - 1)
1,先随机生成一个5*5的一个矩阵,调用np.cov()可得到协方差矩阵,其中的参数rowvar默认为False,是按照列来计算协方差,和我们学过的线性代数中是一致的,计算的是特征与特征之间。
rowvar设置为True,是计算行之间的协方差。
2,根据样本方差的自由度是n-1,计算时参数需要加上ddof=1,相当于n-1。可以从下图看出,第一个特征的协方差得到一样的结果。
3,利用数学公式算出第一个特征与第二个特征的协方差,经对比利用函数cov()和数学公式计算结果是相同的。