给定两个向量X和Y,我必须找到它们的相关性,即它们的线性依赖性/独立性。两个向量的维数相等。结果应该是一个从[-1.0。。1.0条]。
示例:
X=[-1, 2, 0]
Y=[ 4, 2, -0.3]
找到y=cor(X,y)使y属于[-1.0。。1.0]。
它应该是一个包含列表理解的简单构造。不允许使用外部库。
更新:好的,如果点积足够,那么这里是我的解决方案:
nX = 1/(sum([x*x for x in X]) ** 0.5)
nY = 1/(sum([y*y for y in Y]) ** 0.5)
cor = sum([(x*nX)*(y*nY) for x,y in zip(X,Y) ])
对吧?
对我来说好像是个dot product。
解出两个向量夹角的余弦方程,它总是在-1,1的范围内,你就得到了你想要的。
等于点积除以两个向量的大小。
因为范围应该是
[-1, 1]
,所以我认为Pearson Correlation对于您的目的是可以的。同样,点积也可以工作,但是在计算它之前,你必须规范化向量,你可以有一个-1,1的范围,如果你也有负值的话。。否则你会得到0,1
不要因为公式在代数上是正确的就认为它在代码中的直接实现可以工作。一些相关定义可能存在数值问题。
见How to calculate correlation accurately
相关问题 更多 >
编程相关推荐