You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scipy与dcor库中距离相关性指标的差异及结果分歧咨询

scipy与dcor库距离相关性结果差异的原因

两者计算的根本不是同一个指标,这是结果差异巨大的核心原因:

  • dcor.distance_correlation:衡量非线性依赖的距离相关系数
    这个指标专门用于检测两个变量之间的非线性依赖关系,取值范围是[0,1]。0代表变量完全独立,1代表变量存在完全的依赖(包括线性和非线性)。你例子里的0.81,说明数组a和b之间有很强的非线性关联。

  • scipy.spatial.distance.correlation:基于皮尔逊相关的距离指标
    这个函数计算的是相关距离,公式为 1 - 皮尔逊相关系数,本质是衡量两个变量的线性相关程度,取值范围是[0,2]。0对应完全线性正相关,2对应完全线性负相关,1对应无线性相关。你得到的0.34,反推皮尔逊相关系数是1-0.34=0.66,说明a和b的线性相关程度中等,但因为数据里存在明显的非线性成分(比如b的最后一个值从3跳至14),所以这个结果远低于dcor的非线性依赖检测值。

验证代码(修正原代码的语法错误)

import numpy as np
import dcor
from scipy.spatial.distance import correlation

a = np.array([1., 2., 3., 4.])
b = np.array([5., 2., 3., 14.])

dcor_result = dcor.distance_correlation(a, b)
scipy_corr_dist = correlation(a, b, centered=True)
pearson_corr = 1 - scipy_corr_dist

print(f"dcor距离相关系数: {dcor_result:.6f}")
print(f"scipy相关距离: {scipy_corr_dist:.6f}")
print(f"推导的皮尔逊相关系数: {pearson_corr:.6f}")

内容的提问来源于stack exchange,提问作者cristiandatum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:39:35