Numpy cov()是一个用于计算协方差矩阵的函数。协方差矩阵是一个描述随机变量之间关系的矩阵,通常用于统计学和机器学习中的数据分析。
本文将介绍Numpy cov()的作用与使用方法,并提供两个实例详细说明。
将数据集X的协方差矩阵进行计算,然后返回该矩阵。协方差矩阵描述了变量之间的关系、方向和强度。除此之外,协方差矩阵还可用于数据降维、找到数据集的主要统计特征等。
numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)
参数解释:
m:要计算协方差矩阵的数据集。
y:第二个数据集,若给定则必须和第一个数据集的数据形状相同。
rowva|:如果值为True(默认设置),则表示行是具有不同变量的观测值。 如果值为False,则列是具有不同的变量的观测值
bias:如果值为True,则会对计算偏差进行校正。默认为False,不做偏差校正。
ddof:自由度校正值,表示数据集样本的数目,即n-1。如果指定,则当基于样本计算协方差矩阵时被用于从除数中减去。
fweights:表示观测值的浮点权重。
aweights:表示观测值的阵列权重。
返回值:
返回一个数组,表示给定数据集的协方差矩阵。如果输入是二维的,并且rowvar=True
(默认),那么返回结果将是形状为(m
,m
)数组,其中m
是输入数据中的唯一元素数量。如果y
提供,则返回结果的形状为(m
, n
),其中n
是y
中的独特元素的数量。
同时需要注意的是,在二维数据中,均值会按行计算并自动减去(仅当rowvar=True
时)。
例如:
import numpy as np
# 样本数据,4个4维的样本
X = np.array([
[1, 5, 3, 4],
[2, 6, 5, 2],
[9, 0, 1, 1],
[4, 5, 6, 7]
])
# 计算协方差矩阵
cov_mat = np.cov(X, rowvar=False)
#cov_mat = np.cov(X.T)
print(cov_mat)
输出:
[[8.5 1.75 -14. -3.25 ]
[1.75 1.91666667 -2.25 0.58333333]
[-14. -2.25 1.66666667 7.25 ]
[-3.25 0.58333333 7.25 3.91666667]]
接下来我们举两个实例进行说明:
import numpy as np
x = [1, 2, 3, 4, 5]
y = [10, 9, 7, 6, 12]
# 计算两个一维数组的协方差矩阵
cov_mat = np.cov(x, y)
print(cov_mat)
输出:
[[ 2.5 -7. ]
[-7. 16.3]]
输出结果解释:输入的两个数组x和y都只有一个维度。所以,输出的协方差矩阵是2x2的矩阵。矩阵的第一个元素是x的方差( 2.5 ),第二个元素是函数在y和x之间计算的协方差( -7 )。第三个元素是y的方差( 16.3 )。
import numpy as np
# 样本数据,4个4维的样本
X = np.array([
[1, 5, 3, 4],
[2, 6, 5, 2],
[9, 0, 1, 1],
[4, 5, 6, 7]
])
# 计算协方差矩阵
cov_mat = np.cov(X, rowvar=False)
print(cov_mat)
输出结果:
[[12.66666667 -9. -4.66666667 -3.66666667]
[-9. 7.33333333 5. 3.66666667]
[-4.66666667 5. 4.91666667 4.16666667]
[-3.66666667 3.66666667 4.16666667 7. ]]
输出结果解释:这个例子是一个具有4个样本和每个样本的4个维度的二维数据集。
sample1的各个维度的平均值是( 4.0 4.0 3.75 3.5),x的平均值是4.9375, y的平均值是4.8125,z的平均值是4.125,而w的平均值是3.25。根据上面的公式,我们可以计算每个元素的协方差。
注意,函数在计算协方差矩阵时自动减去了均值。最终输出的协方差矩阵大小为4x4。
本文链接:http://task.lmcjl.com/news/17104.html