今天在做数据分析的时候,发现了需要计算特征之间的相似度,从而在相似度比较高的特征之间保留一个就行。查了一下,发现可以通过皮尔逊相关系数和spearman相关系数来计算特征之间的相似度,下面将介绍这两个系数和区别。
皮尔逊相关系数
下面是皮尔逊相关系数的计算公式,只需要将(X和Y的协方差)/(X的标准差*Y的标准差)
可以化简成
spearman相关系数
简单的相关系数的分类
那么对于这两个系数,怎样的值才是好的呢,遵循下面的关系
- 0.8-1.0:极强相关
- 0.6-0.8:强相关
- 0.4-0.6:中等强度相关
- 0.2-0.4:弱相关
- 0.0-0.2:极弱或者无相关
区别
那么有个问题,是所有的变量都可以用这两个系数吗,这两个变量当然是有区别的,区别如下。
- 连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用spearman相关系数也可以,效率没有pearson相关系数高。
- 上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。
- 两个定序测量数据(顺序变量)之间也用spearman相关系数,不能用pearson相关系数。
- 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