【发布时间】:2014-12-27 02:57:04
【问题描述】:
我使用 scipy 的 pdist 和相关度量来构造一个相关矩阵,但这些值与我从 numpy 的 corrcoef 获得的值不匹配。
我在一个非常简单的两个具有相同值的一维数组上应用了 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))
【问题讨论】:
-
你的意思是
scipy.spatial.distance.pdist(docs.scipy.org/doc/scipy/reference/generated/…)?请显示给您带来意外结果的确切代码(即我们可以自己复制和运行的代码)。 -
“相关距离”与相关系数不同。两个相等点之间的“距离”假定为 0。(如果您搜索“相关距离”,请注意还有另一个概念,即“距离相关”,它与“相关距离”。)
-
感谢您的澄清!
-
不妨让我的评论成为答案...
标签: python numpy scipy correlation