Roc*_*etq 6 python scipy correlation python-2.7
我正在尝试找到列之间的距离相关性,请查看下面的代码.大多数时候它返回高于1的结果,这是不可能的,因为距离相关在0和1之间.你可以在这里阅读关于scipy的距离相关性.
import numpy as np
from scipy.spatial import distance
x = np.random.uniform(-1, 1, 10000)
print distance.correlation(x, x**2)
Run Code Online (Sandbox Code Playgroud)
1.00210811815
这里有什么问题或我该如何衡量?
根据文档,我不明白为什么这是一个问题。
从文档:
u 和 v 之间的相关距离定义为1 - \frac{(u - \bar{u}) \cdot (v - \bar{v})} {{||(u - \bar{u}) ||}_2 {||(v - \bar{v})||}_2}
根据柯西-施瓦茨不等式,减号后面的表达式的绝对值至多为 1。没有任何规定它不会是负数,尽管 - 事实上,如果(均值归一化)向量是反相关的,就会发生这种情况。
AFAICT,如果您得到的值大于 2 或小于 0,您应该会感到惊讶。使用 @Cleb 的评论以及范围是 [0, 2] 的事实,我猜其他一些包只是定义了距离作为这个表达式的一半。
@josef-pkt在 github 上的回答如下:
这不是距离相关性,而是一种非线性的依赖性度量。例如我的看法 http://jpktd.blogspot.ca/2012/06/non-linear-dependence-measures-distance.html 然而,scipy.spatial.distance.correlation 中的“相关性”有点误导,因为根据公式在文档字符串中,它是距离度量而不是相关性。与等于 1 的相关系数完全相关具有零距离 完全负相关与等于 -1 的相关系数具有最大距离 2。