2

这个问题可能很愚蠢,但我找不到解释。

我正在从头开始编码多元概率密度函数(出于研究目的),我需要计算的一件事是数据的协方差矩阵。我正在使用 Iris 数据集(150 个样本,4 个特征),当我编码时:


cov_matrix = np.cov(X)
print(cov_matrix.shape) // (150,150)

我不明白为什么它返回一个 150x150 矩阵,这是一个“逐元素协方差矩阵”吗?它不应该是一个 4x4 协方差矩阵吗?

提前致谢。

4

2 回答 2

2

默认情况下, Numpy 假设变量在行中,而观察值在列中:

rowvar : bool,可选
如果 rowvar 为 True(默认),则每一行代表一个变量,列中包含观察值。否则,关系被转置:每列代表一个变量,而行包含观察值。

于 2020-12-29T14:57:55.923 回答
1

numpy.cov的参考页面中,有一个名为的参数,默认rowvar设置为True。以下段落是它的解释:

如果 rowvar 为 True(默认),则每一行代表一个变量,列中包含观察值。否则,关系被转置:每列代表一个变量,而行包含观察值。

因此,它假设给定的矩阵在列中有观察值。因此,您需要输入$X^T$(通过X.T)或使用 调用此函数rowvar=False

于 2020-12-29T14:57:16.113 回答