Python机器学习:corr()分析变量之间的相关关系

Posted 紫昂张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python机器学习:corr()分析变量之间的相关关系相关的知识,希望对你有一定的参考价值。

变量之间存在多重共线性的情况下会影响模型的精度,这里用相关矩阵corr()和热力图heatmap()可以直观地观察变量之间的相关关系,进而判断是否要对自变量进行删除,或者降维的操作。

首先用corr()构造相关矩阵研究变量之间的相关关系:

corr_data = data.corr()
corr_data

代码讲解:

data是要进行分析的数据集;

corr()是相关矩阵,是DataFrame内置函数,不用另外调包也能生成;

corr()括号里面没有填参数时默认是皮尔逊相关系数,corr(method = 'pearson');

corr(method = 'spearman'),斯皮尔曼等级相关系数,用来分析非正态分布的数据;
corr(method = 'kendall'),秩相关系数,用来分析两定序变量相关关系;

运行结果:

 

可以发现字段太多,要找到强相关关系的字段并不是很容易。需要再配合热力图使用。


import seaborn as sns
ax = sns.heatmap(corr_data)

代码讲解:

seaborn 是Python中的一个可视化库;

sns. heatmap()指调用热力图方法,corr_data是上面计算完相关关系的二维表;

运行结果:

 转为热力图就非常直观啦:从右侧可以了解越接近白色的部分代表相关系数越高,有几个字段是具有强相关性的,需要进行删除或者降维操作。

SAS学习89(方差分析anova过程相关分析和回归分析corr过程reg过程多元线性回归stepwise)

方差分析(anova过程)

做方差分析前提是假设每一个随机变量是符合正态分布的,且方差是一样的

可以两两构造t检验进行分析

anova过程是交互式过程,需要quit退出



可以看到下面分成了两组

单因素方差分析

R书415页

双因素方差分析

董书264,数学概念在R书435页

不考虑两个变量的交互作用,即相互影响


相关分析与回归分析

找出变量之间的相互关系
相关分析是发现关联关系,回归分析是写出关系式

corr过程

nomiss 忽略有缺失值的观测行
nosimple 会影响输出结果

如果nosimple的话,不会输出上面的两行
0.0022 是假设检验算出来的结果,说明拒绝原假设,即两个变量相关

一元线性回归分析




reg过程


先做相关分析
model y=x,左边是因变量,右边是自变量

-17.35是截距,0.22是斜率
其他东西都是对这个回归做检验,检验其是否合理;比如样本值本身不是正态分布;回归是否是线性的;变量之间是否有关系

可以在中间三行看到,F检验,pr值很小,那么说明模型相当好,具有明显的统计学意义
R-Square,相关系数平方,除以n-1
Adj R-Sq 调整过的相关系数平方,除以的是n-2,两个都比较大,说明相关性高

在对系数进行检验时,看到对斜率进行t检验,pr值很小,拒绝斜率为0的假设
但是看到截距的t检验,pr值很大,要接受截距=0的假设;说明这里截距计算有问题,需要调整

调整就是鼠标那行,加了个noint,也就是no intercept,没有截距

其中的一些概念

多元线性回归

有两个变量的检验情况不太好,分别是weight和rstpulse
说明可能关系不大,需要剔除

向前引入法是局部最优解

相关系数平法的大小阈值和统计变量的多少有关
第一步,只有一个变量

第二步,加了个年龄,相关系数平方增大,cp减小,模型变好了
第三步加了rumpulse,更好了
第四步加了maxpulse,更好了


以上是关于Python机器学习:corr()分析变量之间的相关关系的主要内容,如果未能解决你的问题,请参考以下文章

SAS学习89(方差分析anova过程相关分析和回归分析corr过程reg过程多元线性回归stepwise)

SAS学习89(方差分析anova过程相关分析和回归分析corr过程reg过程多元线性回归stepwise)

python机器学习回归算法-线性回归

机器学习之python---Python实现逻辑回归(LogisticRegression)

R使用笔记:相关系数:cor.test();corr.test();rcorr()

python机器学习 主成分分析(PCA)