给定两个向量 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) ])
正确?
答案 0 :(得分:4)
由于范围应为[-1, 1]
,我认为Pearson Correlation可以满足您的目的。
此外,dot-product可以正常工作,但你必须在计算之前对矢量进行标准化,并且如果你还有负值,你可以得到-1,1范围。否则你会得到0,1
答案 1 :(得分:3)
答案 2 :(得分:2)
不要假设,因为公式在代数上是正确的,因为它在代码中的直接实现是有效的。某些相关定义可能存在数值问题。