示例图:
皮尔森相关系数为了确定 每个特征之间是否紧密相关,如果很相关就属于重复特征,可以去除。 我们输入机器学习模型中的每个特征都独一无二,这才是最佳。
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就是没有任何关系的
这样我们就求得了两个数组之间的关系程度,排除强相关特征,降低机器学习数据维度,从而得到更好的模型。
领取专属 10元无门槛券
私享最新 技术干货