【问题标题】:Scipy's pdist correlation metric not same as numpy corrcoefScipy 的 pdist 相关指标与 numpy corrcoef 不同
【发布时间】: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


【解决方案1】:

“相关距离”与相关系数不同。两个相等点之间的“距离”假定为 0。(如果您搜索“相关距离”,请注意还有另一个概念,即“距离相关性”,它并不相同作为“相关距离”。)

【讨论】:

  • 相关距离也只是[1 - 相关系数]!
猜你喜欢
  • 1970-01-01
  • 2015-10-15
  • 2022-11-01
  • 2018-11-05
  • 2011-08-04
  • 2014-03-23
  • 2013-03-09
  • 2018-08-08
  • 2015-12-10
相关资源
最近更新 更多