(Pearson)皮尔逊相关系数和spearman相关系数(附python实现)

今天在做数据分析的时候,发现了需要计算特征之间的相似度,从而在相似度比较高的特征之间保留一个就行。查了一下,发现可以通过皮尔逊相关系数和spearman相关系数来计算特征之间的相似度,下面将介绍这两个系数和区别。

皮尔逊相关系数

下面是皮尔逊相关系数的计算公式,只需要将(X和Y的协方差)/(X的标准差*Y的标准差)

在这里插入图片描述
可以化简成
(Pearson)皮尔逊相关系数和spearman相关系数(附python实现)_第1张图片

spearman相关系数

(Pearson)皮尔逊相关系数和spearman相关系数(附python实现)_第2张图片

简单的相关系数的分类

那么对于这两个系数,怎样的值才是好的呢,遵循下面的关系

  • 0.8-1.0:极强相关
  • 0.6-0.8:强相关
  • 0.4-0.6:中等强度相关
  • 0.2-0.4:弱相关
  • 0.0-0.2:极弱或者无相关

区别

那么有个问题,是所有的变量都可以用这两个系数吗,这两个变量当然是有区别的,区别如下。

  1. 连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用spearman相关系数也可以,效率没有pearson相关系数高。
  2. 上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。
  3. 两个定序测量数据(顺序变量)之间也用spearman相关系数,不能用pearson相关系数。
  4. Pearson相关系数的一个明显缺陷是,作为特征排序机制,他只对线性关系敏感。如果关系是非线性的,即便两个变量具有一一对应的关系,Pearson相关性也可能会接近0。

代码实现

import pandas as pd
data = loans_2007[["funded_amnt", "funded_amnt_inv"]]
#计算皮尔逊系数
print(data.corr())
#计算spearman系数
print(data.corr('spearman'))

这是结果,可以看出这两个变量的相关性还是很高的



                 funded_amnt  funded_amnt_inv
funded_amnt         1.000000         0.947525
funded_amnt_inv     0.947525         1.000000
                 funded_amnt  funded_amnt_inv
funded_amnt          1.00000          0.92876
funded_amnt_inv      0.92876          1.00000

你可能感兴趣的:(机器学习,特征工程,数据预处理)