如何计算欧几里德距离的相关性?

时间:2015-04-10 11:58:16

标签: python math distance linear-algebra correlation

是否有可能使用欧几里德距离计算两个向量之间的相关性

欧几里德距离的含义是:

Euclidean(X,Y) = sqrt((x1 - y1)*(x1 - y1) + ... + (xN - yN)*(xN - yN))

如果我们对载体进行标准化或标准化甚至没有标准化,是否可能?

我正在寻找的是计算0到1之间的分数。 (1~高相关性)

现在,我得到了距离的向量。我把它除以最大距离。 我获得了矢量D.

然后: 1 - D

你认为从欧几里德距离获得分数的好方法吗?

我也有兴趣在一个地方拥有所有不同的相关性指标及其应用领域。

2 个答案:

答案 0 :(得分:1)

有许多方法可以确定两个向量的相似程度,但我怀疑并非所有这些都严格地说是相关度量。如果您对使用向量的大小及其差异感兴趣,那么明显的度量标准将是差异向量的相对大小和两个给定向量的平均大小。例如,给定的向量XY(不是0),您可以计算度量M

       2∙||X-Y||
M  = -------------
     ||X|| + ||Y||

现在这与你正在寻找的东西有些相反,其中接近0的值表示彼此相对接近的向量,并且它们实际上并没有达到这个大小的约束。但是,有一些方法可以基于M'获得M。这样做的一种方法可能是:

M' = 1-2∙atan(M)/π

根据您的描述获得M'的另一种方法是使用指数衰减,如下所示:

M' = exp(-M)

在任何一种情况下M'都是1,当向量相同并且渐近逼近0时,它们相对于它们的平均长度的差异越大。

我不知道这种方法有任何正式的名称(这并不意味着没有一个)。我只是根据我认为是你的要求而做出的。但是,我仍然不清楚你正在寻找什么,所以如果这不是你需要的,那么说明为什么这对你不利,所以我或其他人可以更好地了解您的要求并提供更好的解决方案。

答案 1 :(得分:0)

在3D空间u = (u1, u2, u3)v = (v1, v2, v3)中给出两个向量,您可以通过将每个分量除以大小来计算每个向量的单位向量,该大小是向量的欧几里德长度:

m = u/mag(u) = (u1, u2, u3)/sqrt(u1*u1 + u2*u2 + u3*u3) = (m1, m2, m3)
n = v/mag(v) = (v1, v2, v3)/sqrt(v1*v1 + v2*v2 + v3*v3) = (n1, n2, n3)

两个单位向量的点积从(-1,1):

变化
m dot n = m1*n1 + m2*n2 + m3*n3