gpt4 book ai didi

python - numpy.cov 实际上做了什么

转载 作者:行者123 更新时间:2023-11-30 22:46:12 25 4
gpt4 key购买 nike

我是Python和线性代数的新手,我有一个关于矩阵协方差的问题。

我有一个 21 x 2 矩阵,其中第一列代表当年发布的视频游戏的平均得分(从 0 到 10),第二列代表从 1996 年到 2016 年的年份。

我正在处理数据,我注意到通过执行 np.cov(X)我得到了一个非常有趣的图表。我将在下面列出图表。据我了解,协方差显示了数据集中变量之间的依赖性,但是根据这个协方差图,我们可以说游戏的平均分数随着年份的增长而上升,这样的说法是否正确?

enter image description here

谢谢。

最佳答案

你的计算没有意义。默认情况下,对于 np.cov(X) 来说,X 的每一行代表一个变量,在列中包含观察结果。比如说,第一行可能是一年中的降雨量,另一行是视频游戏的平均评分,另一行可能只是年份本身的数字,例如 2012 年。然后 C = np.cov(X) 将为您提供一个 3 x 3 矩阵 C,其中每个对角线条目表示该行内有多少方差,非对角线条目表示不同行的相关程度。即第i行和第j行的相关系数为C[i,j]/sqrt(C[i,i]*C[j,j])

如果您的数据类似于 X = [[7.5, 2010], [8.2, 2011], [8.1, 2013]],则 np.cov(X) 没有意义,因为 7.5 和 2010 不是同一变量的两个不同观测值。相反,7.5、8.2 和 8.1 是对同一变量(游戏评分)的不同观察结果。你应该使用的是

C = np.cov(X, rowvar=False)

告诉 Numpy 你的变量在列中。在我的示例中,您将得到一个 2 x 2 矩阵(因为有 2 个变量)

  [[ 0.14333333,  0.38333333],
[ 0.38333333, 2.33333333]]

由于非对角项为正,因此两个变量确实呈正相关。具体来说,相关系数为C[0,1]/np.sqrt(C[0,0]*C[1,1]),为0.66,相关性相当强。

关于python - numpy.cov 实际上做了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40945088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com