距离相关系数:
线性关系可以通过pearson相关系数来描述,单调关系可以通过spearman或者kendall来描述,非线性如何描述,距离相关系数可以非线性相关性。
我们都知道,皮尔森关联系数只能描述数据键的线性相关性程度,对于非线性相关数据,皮尔森关联系数显然不适合的,距离相关系数恰恰能在很大程度上客服皮尔森相关系数的弱点。
比如:Pearson相关系数等于0,这两个变量并不一定就是独立的(有可能是非线性相关);但如果距离相关系数为0的话,那么就可以说这两个变量是独立的了。
距离相关系数的计算依赖于距离协方差和距离方差,首先我们先了解下距离协方差的定义,假设有n维(X,Y)统计样本。
- 首先计算包含的所有成对距离(即:数组间每行数据之间的范数距离)
为了防止我没有描述清楚,直接上代码:
#生成一个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]
#做成nn的零矩阵,用于盛放数据
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