机器学习特征工程之皮尔森相关系数 pearson correlation of features

示例图:

皮尔森相关系数为了确定 每个特征之间是否紧密相关,如果很相关就属于重复特征,可以去除。 我们输入机器学习模型中的每个特征都独一无二,这才是最佳。

python实现代码

import seaborn as sns #图表模块

import matplotlib.pyplot as plt #绘图模块库

colormap = plt.cm.RdBu # 绘图库中的颜色查找表。比如A1是红色,A2是浅蓝色。 这样一种映射关系

plt.figure(figsize=(14,12))#创建一个新的图表,参数是尺寸,单位为英寸。

plt.title('Pearson Correlation of Features', y=1.05, size=15) #给图表一个标题~~

sns.heatmap(train.astype(float).corr(),linewidths=0.1,vmax=1.0,square=True, cmap=colormap, linecolor='white', annot=True) #将皮尔森系数值画成图表形式。

代码解释:

这里的train.astype(float).corr() 中的train 是python pandas模块中DateFrame结构,这里存储着的是机器学习模型的训练数据, 然后通过.corr()求皮尔森相关系数方法,计算出相关系数。

corr()是correlation的缩写,中文意思为相关。

算法底层原理:

皮尔森系数公式为:

cov(X,Y) 是求X数组和Y数组的协方差。

协方差公式为:

当协方差值>0时,表明两个数组正相关

当协方差值=0时,表明两个数不相关

当协方差值

回到皮尔森相关系数,现在我们已经知道了 协方差计算出了 相关性,但是只知相关性,而无法度量它强和弱,

如何度量强和弱呢?

这是用协方差/(X数组的标准差*Y数组的标准差),

这个公式的作者是否从余弦距离得到的启发呢?如下图

最终我们计算出了-1 到 1 的取值结果。

公式求的值对应下面图表(省略了x轴和y轴,自行脑补。。),例如1和-1 他们就是线性相关,一个是正相关,一个负相关,而0就是没有任何关系的

这样我们就求得了两个数组之间的关系程度,排除强相关特征,降低机器学习数据维度,从而得到更好的模型。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180809G14PSM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券