已知两向量 a 和 b ,利用协方差公式计算其相关性
import numpy as np
a = np.array([3,5,4,12,9])
b = np.array([5,15,5,6,7])
根据公式查得协方差公式为 Cov(X,Y)=E(XY)-E(X)E(Y)
那么E(X)=(3+5+4+12+9)/5=6.6
E(Y)=(5+15+5+6+7)/5=7.6
E(XY)=(3*5+5*15+4*5+12*6+9*7)/5=49
协方差结果应该等于 -1.16
但是 numpy 中给出的结算结果是
>>> np.array([a,b])
[[14.3 -1.45]
[-1.45 17.8 ]]
为什么协方差计算结果不是一个值而是 2x2 的矩阵呢?而且其中也没有结果等于-1.16 ,应该如何理解 numpy 的计算结果?
另外需求上是提供一个图片指纹(一维向量),想要尝试使用协方差计算最近似图片的思路,也就是和数据库里备选的几万个同样长度的向量分别做协方差,并筛选出相似度最高的。这种情况下应该如何写 numpy 会比较快呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.