Numpy 协方差矩阵 numpy.cov
Numpy Covariance Matrix numpy.cov
我正在使用 numpy 并想计算 ndarray 的协方差矩阵。我正在尝试使用 numpy.cov() 但没有得到正确的结果。更多细节如下。
我的 ndarray 是 768x8,其中 8 是我数据集中的数字特征。
当我使用 MATLAB 计算协方差矩阵时,我得到一个 8x8(这是我需要的),但是当我使用 np.cov() 时,我得到一个 768x768,这是不正确的。我尝试将 rowvar 参数更改为 true,但这不起作用。
numpy.cov() 的正确调用是什么?换句话说,我将如何使用 numpy.
从 MATLAB 重现 cov() 结果
令人惊讶的是,documentation 可能会告诉您。您应该传递 rowvar=False
以指示列代表变量。
>>> data.shape
(768, 8)
>>> numpy.cov(data, rowvar=False).shape
(8, 8)
默认情况下,每一行是观察,每一列是特征,根据定义在 numpi 中交换,所以你需要做的就是转置,其中 R 是矩阵
np.cov(R.T)
或
np.cov(R, rowvar = False)
我正在使用 numpy 并想计算 ndarray 的协方差矩阵。我正在尝试使用 numpy.cov() 但没有得到正确的结果。更多细节如下。
我的 ndarray 是 768x8,其中 8 是我数据集中的数字特征。
当我使用 MATLAB 计算协方差矩阵时,我得到一个 8x8(这是我需要的),但是当我使用 np.cov() 时,我得到一个 768x768,这是不正确的。我尝试将 rowvar 参数更改为 true,但这不起作用。
numpy.cov() 的正确调用是什么?换句话说,我将如何使用 numpy.
从 MATLAB 重现 cov() 结果令人惊讶的是,documentation 可能会告诉您。您应该传递 rowvar=False
以指示列代表变量。
>>> data.shape
(768, 8)
>>> numpy.cov(data, rowvar=False).shape
(8, 8)
默认情况下,每一行是观察,每一列是特征,根据定义在 numpi 中交换,所以你需要做的就是转置,其中 R 是矩阵
np.cov(R.T)
或
np.cov(R, rowvar = False)