开启生长之旅!这是我参加「日新计划 2 月更文应战」的第 4 天,点击查看活动概况

前言

相关性剖析算是许多算法以及建模的基础知识之一了,十分经典。关于许多特征相关关系以及相关趋势都能够运用相关性剖析核算表达。其间常见的相关性系数就有三种:person相关系数,spearman相关系数,Kendall’s tau-b等级相关系数。各有各自的用法和运用场景。当然关于这以上三种相关系数的核算算法和原理+代码我都会在我专栏里边写齐全。目前关于数学建模的专栏现已将传统的机器学习猜测算法、维度算法、时序猜测算法和权重算法写的七七八八了,有这个需求兴趣的同学能够去看看。

皮尔逊相关性分析一文详解+python实例代码

一、数值类型

之前在我上篇文章说过关于数据特征是一个很重要的比方,任何剖析算法都需要树立在其符合运用场景之上,咱们需要对症下药,从数据特征开端剖析。

依照数据存储的数据格式能够归纳为两类:

皮尔逊相关性分析一文详解+python实例代码

依照特征数据含义又可分为:

  • 离散型随机变量:取值只能是可取范围内的指定数值类型的随机变量,比方年纪、车流量此类数据。

  • 连续随机变量:依照测量或许核算方法得到,在某个范围内连取n个值,此类数据可化为定类数据。

  • 二分类数据:此类数据仅只有两类:例如是与否、成功与失利。

  • 多分类数据:此类数据有多类:例如天气出太阳、下雨、阴天。

  • 周期型数据:此类数据存在一个周期循环:例如周数月数。

那么问题来了,关于这三种系数到底适用于哪种数据场景呢?

皮尔逊系数运用场景

首要运用皮尔逊系数的情况包括以下三种特性,咱们从scipy的函数pearsonr的相关阐明就能够看出:

The Pearson correlation coefficient [1] measures the linear relationship between two datasets. Like other correlation coefficients, this one varies between -1 and +1 with 0 implying no correlation. Correlations of -1 or +1 imply an exact linear relationship. Positive correlations imply that as x increases, so does y. Negative correlations imply that as x increases, y decreases.

也便是说:皮尔逊相关系数测量两个数据集之间的线性关系。与其他相关系数一样,该系数在-1和+1之间改变,0表明不相关。-1或+1的相关性意味着准确的线性关系。正相关意味着x添加,y也添加。负相关意味着跟着x添加,y削减。 总结一下对于皮尔逊相关系数的运用场景,有三种必要的特性运用皮尔逊系数最佳:

  • 连续数据
  • 正态分布
  • 线性关系

上述三个条件均满足才能运用pearson相关系数,不然就用spearman相关系数。定序数据之间也只用spearman相关系数,不能用pearson相关系数。

皮尔逊相关系数(Pearson correlation)

界说

两个变量之间的皮尔逊相关系数界说为两个变量之间的协方差和标准差的商:

皮尔逊相关性分析一文详解+python实例代码

上式界说了整体相关系数,常用希腊小写字母作为代表符号。估算样本的协方差和标准差,可得到皮尔逊相关系数,常用英文小写字母代表:

皮尔逊相关性分析一文详解+python实例代码

亦可由样本点的标准分数均值估量,得到与上式等价的表达式:

皮尔逊相关性分析一文详解+python实例代码

其间

皮尔逊相关性分析一文详解+python实例代码
皮尔逊相关性分析一文详解+python实例代码
以及分别是对样本的标准分数、样本平均值和样本标准差。

变量相关强度

相关程度 极强相关 强相关 中等强度相关 弱相关 极弱相关或无相关
相关系数肯定值 1-0.8 0.8-0.6 0.6-0.4 0.4-0.2 0.2-0

2.线性关系判定

一般能够运用散点图加上最小二乘法拟合大体看出线性关系:

皮尔逊相关性分析一文详解+python实例代码

皮尔逊相关性分析一文详解+python实例代码

皮尔逊相关性分析一文详解+python实例代码

3.正态查验

1.KS查验

假定查验的基本思想:

若对整体的某个假定是实在的,那么不利于或许不能支撑这一假定的事情A在一次实验中是几乎不可能发生的。假如事情A真的发生了,则有理由置疑这一假定的实在性,然后回绝该假定。

本质剖析: 假定查验本质上是对原假定是否正确进行查验,因此查验过程中要使原假定得到保护,使之不容易被回绝;否定原假定必须有充分的理由。一起,当原假定被承受时,也只能以为否定该假定的根据不充分,而不是以为它肯定正确。

凭借假定查验的思想,运用K-S查验能够对数列的性质进行查验:

皮尔逊相关性分析一文详解+python实例代码

def normal_test(data):
    u = data.mean()
    std = data.std()
    result = stats.kstest(data, 'norm', (u, std))
    print(result)
normal_test()

皮尔逊相关性分析一文详解+python实例代码

此时,pvalue > 0.05,不回绝原假定。因此数据遵守正态分布。

4.核算代码

若以上验证均成功则采纳皮尔逊相关系数进行相关性剖析,能够运用pandas的函数corr:


DataFrame.corr(method='pearson', 
               min_periods=1,
               numeric_only=_NoDefault.no_default)

参数阐明:

method: {‘pearson’, ‘kendall’, ‘spearman’} or callable。Method ofcorrelation。

  • pearson : standard correlation coefficient,皮尔逊系数

  • kendall : Kendall Tau correlation coefficient,肯德尔系数

  • spearman :Spearman rank correlation,斯皮尔曼系数

min_periods:int, optional。每对列所需的最小样本数。目前仅适用于Pearson和Spearman相关性。 numeric_only:bool, default True。仅包括浮点、整型或布尔型数据。

rho =df_test.corr(method='pearson')
rho

皮尔逊相关性分析一文详解+python实例代码

plt.rcParams['font.family'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
sns.heatmap(rho, annot=True)
plt.title('Heat Map', fontsize=18)

皮尔逊相关性分析一文详解+python实例代码

点关注,防走丢,如有纰漏之处,请留言指导,非常感谢

以上便是本期全部内容。我是fanstuck ,有问题咱们随时留言讨论 ,咱们下期见