特征工程之距离相关系数( Distance correlation coefficient )

距离相关系数是描述非线性相关性的有效工具,弥补了皮尔森相关系数的不足。当皮尔森相关系数为0时,不能断定变量独立,但若距离相关系数为0,则可认为变量独立。本文通过实例解释并展示了使用Python计算距离相关系数的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

距离相关系数:

线性关系可以通过pearson相关系数来描述,单调关系可以通过spearman或者kendall来描述,非线性如何描述,距离相关系数可以非线性相关性。
我们都知道,皮尔森关联系数只能描述数据键的线性相关性程度,对于非线性相关数据,皮尔森关联系数显然不适合的,距离相关系数恰恰能在很大程度上客服皮尔森相关系数的弱点。
比如:Pearson相关系数等于0,这两个变量并不一定就是独立的(有可能是非线性相关);但如果距离相关系数为0的话,那么就可以说这两个变量是独立的了。

距离相关系数的计算依赖于距离协方差和距离方差,首先我们先了解下距离协方差的定义,假设有n维(X,Y)统计样本。

  1. 首先计算包含的所有成对距离(即:数组间每行数据之间的范数距离)
    在这里插入图片描述
    为了防止我没有描述清楚,直接上代码:
    #生成一个3行2列的数组
    X = np.random.randint(-100,100,(3,2))0.1
    out:array([[ 4.8, 7.7],
    [-2.6, 6.8],
    [ 5.9, 9. ]])
    Y = X**2
    #取数据集的行
    col = X.shape[0]
    #做成n
    n的零矩阵,用于盛放数据
    a = np.zeros((col,col))
    b = np.zeros((col,col))
    A = np.zeros((col,col))
    B = np.zeros((col,col))
    #计算数组间每行数据之间的范数距离
    for j in range(col):
    for k in range(col):
    a[j,k] = np.linalg.norm(X[j]-X[k])
    b[j,k] = np.linalg
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值