Scipy的pdist相关度量与numpy corrcoef不同

时间:2014-12-26 18:12:37

标签: python numpy scipy correlation

我使用scipy的pdist和相关度量来构建相关矩阵,但是这些值与我从numpy的corrcoef中获得的值不匹配。

我在一个非常简单的两个相同值的1-d数组上应用了pdist:[1,2,3]和[1,2,3]:

from scipy.spatial.distance import pdist, squareform
import pandas as pd
import numpy as np

df = pd.DataFrame([[1,1],[2,2],[3,3]]).transpose()
print np.corrcoef(df)
print squareform(pdist(df, metric='correlation'))

我没有输出相关值1,而是从pdist得到2.2E-16:

[[ 1.  1.]
 [ 1.  1.]]

[[  0.00000000e+00   2.22044605e-16]
 [  2.22044605e-16   0.00000000e+00]]

以下是我在scipy中找到的相关度量标准代码:

umu = u.mean()
vmu = v.mean()
um = u - umu
vm = v - vmu
dist = 1.0 - np.dot(um, vm) / (norm(um) * norm(vm))

1 个答案:

答案 0 :(得分:4)

"相关距离"与相关系数不同。 A"距离"两个相等点之间假设为0.(如果搜索"相关距离",请注意还有另一个概念,"距离相关" ,这与"相关距离不相同"。)