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

示例图:

机器学习特征工程之皮尔森相关系数 pearson correlation of features_第1张图片

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

python实现代码

import seaborn as sns #图表模块

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

from matplotlib.font_manager import FontProperties  #修复中文字体

myfont=FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=14) #修复中文字体

sns.set(font=myfont.get_name()) #修复中文字体


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的缩写,中文意思为相关。

算法底层原理:

皮尔森系数公式为:

机器学习特征工程之皮尔森相关系数 pearson correlation of features_第2张图片

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

协方差公式为:

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

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

当协方差值<0时,表明两个数组负相关。

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

如何度量强和弱呢?

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

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


机器学习特征工程之皮尔森相关系数 pearson correlation of features_第3张图片

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

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

机器学习特征工程之皮尔森相关系数 pearson correlation of features_第4张图片

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


机器学习特征工程之皮尔森相关系数 pearson correlation of features_第5张图片
——————————————————————————————————


机器学习特征工程之皮尔森相关系数 pearson correlation of features_第6张图片

你可能感兴趣的:(机器学习特征工程之皮尔森相关系数 pearson correlation of features)