numpy.cov() returns 意外输出
numpy.cov() returns unexpected output
我有一个 X 数据集,它有 9 个特征和 683 行 (683x9)。我想获取此 X 数据集和另一个与 X 具有相同形状的数据集的协方差矩阵。我使用 np.cov(originalData, generatedData, rowvar=False)
代码来获取它,但它 returns 形状为 18x18 的协方差矩阵。我希望得到 9x9 协方差矩阵。你能帮我修一下吗?
方法 cov
计算您给它的 所有 对变量的协方差。一个数组中有 9 个变量,另一个数组中有 9 个变量。总共是18个。所以你得到 18 x 18 矩阵。 (在幕后, cov
连接了您在计算协方差之前给它的两个数组)。
如果您只对第一个数组中的变量与第二个数组中的变量的协方差感兴趣,请选择行的前半部分和列的后半部分:
C = np.cov(originalData, generatedData, rowvar=False)[:9, 9:]
或者一般来说,对于两个不一定相等的矩阵 X 和 Y,
C = np.cov(X, Y, rowvar=False)[:X.shape[1], Y.shape[1]:]
我有一个 X 数据集,它有 9 个特征和 683 行 (683x9)。我想获取此 X 数据集和另一个与 X 具有相同形状的数据集的协方差矩阵。我使用 np.cov(originalData, generatedData, rowvar=False)
代码来获取它,但它 returns 形状为 18x18 的协方差矩阵。我希望得到 9x9 协方差矩阵。你能帮我修一下吗?
方法 cov
计算您给它的 所有 对变量的协方差。一个数组中有 9 个变量,另一个数组中有 9 个变量。总共是18个。所以你得到 18 x 18 矩阵。 (在幕后, cov
连接了您在计算协方差之前给它的两个数组)。
如果您只对第一个数组中的变量与第二个数组中的变量的协方差感兴趣,请选择行的前半部分和列的后半部分:
C = np.cov(originalData, generatedData, rowvar=False)[:9, 9:]
或者一般来说,对于两个不一定相等的矩阵 X 和 Y,
C = np.cov(X, Y, rowvar=False)[:X.shape[1], Y.shape[1]:]