皮尔逊积矩线性相关系数(Pearson's r)用于计算两组数组之间是否有线性关联,举个例子:

a = pd.Series([1,2,3,4,5,6,7,8,9,10])
b = pd.Series([2,3,4,5,6,7,8,9,10,11])

计算两组数据的线性相关性,就是,b是否随着a的增长而增长,或者随着a的增长而减小,或者两者不相关:

皮尔逊积矩线性相关系数的公式是: (标准化数据a * 标准化数据b).mean()

def correlation(x, y):
meanX = x.mean()
deviationX = x.std(ddof=0)
stardardizedX = (x - meanX) / deviationX meanY = y.mean()
deviationY = y.std(ddof=0)
stardardizedY = (y - meanY) / deviationY
return (stardardizedX*stardardizedY).mean()

*注意: 在计算皮尔逊积矩线性相关系数的时候,获取数据标准差时必需添加参数 (ddof=0)

关于如何标准化数据,可以参考: numpy数组-标准化数据

下面以 a b 为例:

r = correlation(a,b)
print(r) # 1.0

结果是1.0,说明是正相关的

修改 a b,查看系数的变化:

a b负相关:

a = pd.Series([1,2,3,4,5,6,7,8,9,10])
b = pd.Series([10,9,8,7,6,5,4,3,2,1])
r = correlation(a,b)
print(r) # -1.0

让 a b负相关性低一点

a = pd.Series([1,2,3,4,5,6,7,8,9,10])
b = pd.Series([10,11,8,7,6,5,4,8,2,1])
r = correlation(a,b)
print(r) # -0.867031357665

让 a b没有什么相关性:

a = pd.Series([1,2,3,4,5,6,7,8,9,10])
b = pd.Series([2,4,1,5,1,3,6,2,7,0])
r = correlation(a,b)
0.102336828287

这里只是随便举几个例子.总之,皮尔逊积矩线性相关系数的范围是-1.0到1.0,如果是正数,就是正相关,负数就是负相关

如果b完全随着a的增加而增加,就是1.0,反之则是-1.0,越接近于0,两者之间的相关性越小

http://rpsychologist.com/d3/correlation/

上面这个网站可以查看数据相关性情况和对应的皮尔逊积矩线性相关系数值

pandas通过皮尔逊积矩线性相关系数(Pearson's r)计算数据相关性的更多相关文章

  1. np.corrcoef()方法计算数据皮尔逊积矩相关系数(Pearson's r)

    上一篇通过公式自己写了一个计算两组数据的皮尔逊积矩相关系数(Pearson's r)的方法,但np已经提供了一个用于计算皮尔逊积矩相关系数(Pearson's r)的方法 np.corrcoef()  ...

  2. 皮尔逊相似度计算的例子(R语言)

    编译最近的协同过滤算法皮尔逊相似度计算.下顺便研究R简单使用的语言.概率统计知识. 一.概率论和统计学概念复习 1)期望值(Expected Value) 由于这里每一个数都是等概率的.所以就当做是数 ...

  3. 皮尔逊(Pearson)系数矩阵——numpy

    一.原理 注意 专有名词.(例如:极高相关) 二.代码 import numpy as np f = open('../file/Pearson.csv', encoding='utf-8') dat ...

  4. Pearson(皮尔逊)相关系数及MATLAB实现

    转自:http://blog.csdn.net/wsywl/article/details/5727327 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察 ...

  5. Pearson(皮尔逊)相关系数

    Pearson(皮尔逊)相关系数:也叫pearson积差相关系数.衡量两个连续变量之间的线性相关程度. 当两个变量都是正态连续变量,而且两者之间呈线性关系时,表现这两个变量之间相关程度用积差相关系数, ...

  6. Spark Mllib里的如何对两组数据用皮尔逊计算相关系数

    不多说,直接上干货! import org.apache.spark.mllib.stat.Statistics 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mlli ...

  7. Python基于皮尔逊系数实现股票预测

    # -*- coding: utf-8 -*- """ Created on Mon Dec 2 14:49:59 2018 @author: zhen "&q ...

  8. 从欧几里得距离、向量、皮尔逊系数到http://guessthecorrelation.com/

    一.欧几里得距离就是向量的距离公式 二.皮尔逊相关系数反应的就是线性相关 游戏http://guessthecorrelation.com/ 的秘诀也就是判断一组点的拟合线的斜率y/x ------- ...

  9. 皮尔逊残差 | Pearson residual

    参考:Pearson Residuals 这些概念到底是写什么?怎么产生的? 统计学功力太弱了!

随机推荐

  1. 什么是AOP?

    AOP(Aspect-Oriented Programming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入封装.继承和 ...

  2. hdu 1576 A/B 【扩展欧几里得】【逆元】

    <题目链接> <转载于 >>> > A/B Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)( ...

  3. 洛谷 p1123 取数游戏【dfs】

    题目链接:https://www.luogu.org/problemnew/show/P1123 转载于:>>>>>> 题目描述 一个N×M的由非负整数构成的数字矩 ...

  4. NumPy学习(让数据处理变简单)

    NumPy学习(一) NumPy数组创建 NumPy数组属性 NumPy数学算术与算数运算 NumPy数组创建 NumPy 中定义的最重要的对象是称为 ndarray 的 N 维数组类型. 它描述相同 ...

  5. python 中的可变对象与不可变对象

    近日辞职待工,没有实际的项目与大家分享.暂写写在实际运用python中遇到的关于可变对象和不可变对象的坑. 首先我们需要明确一个概念,在python中一且皆对象.我们一般定义一个变量a=0,其实质a是 ...

  6. unity与安卓通讯的一些事儿

    1.unity与安卓通讯的两种方法: 第一种是unity导出安卓工程,在unity的BuildSetting窗口可以将unity工程导出为安卓工程,然后再用Eclipse或者Android Studi ...

  7. ClassLoader如何加载class?

    ClassLoader一个经常出现又让很多人望而却步的词,本文将试图以最浅显易懂的方式来讲解 ClassLoader,希望能对不了解该机制的朋友起到一点点作用. 要深入了解ClassLoader,首先 ...

  8. win7 wamp 64位 php环境如何开启curl服务?

    这篇文章主要介绍了PHP简单开启curl的方法,较为详细的讲述了PHP开启curl函数库的具体步骤与相关注意事项,需要的朋友可以参考下 本文讲述了PHP简单开启curl的方法.分享给大家供大家参考,具 ...

  9. 碰到在Windows中访问局域网文件夹, 提示无法访问时的解决办法

    运行:gpedit.msc 找到下图的位置, 启用即可

  10. C#导出Excel文件,过长数值显示为科学计数法解决方法 C#

    C#导出EXCEL文件,身份证号码或某些ID内容长度超过15个数字,这样导出的Excel文件中默认情况下将这个值以科学计数方式显示,下面提供两种解决方式:1.在转出的内容前,加上一个TAB符号,C# ...