概述

皮尔森相关系数也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数,是最常用的一种相关系数。记为r,用来反映两个变量X和Y的线性相关程度,r值介于-1到1之间,绝对值越大表明相关性越强。

定义

总体相关系数ρ定义为两个变量X、Y之间的协方差和两者标准差乘积的比值,如下:

估算样本的协方差和标准差,可得到样本相关系数(即样本皮尔森相关系数),常用r表示:

r还可以由(Xi,Yi)样本点的标准分数均值估计得到与上式等价的表达式:

其中

为Xi样本的标准分数、样本均值和样本标准差,n为样本数量。

物理意义

皮尔森相关系数反映了两个变量的线性相关性的强弱程度,r的绝对值越大说明相关性越强。

当r>0时,表明两个变量正相关,即一个变量值越大则另一个变量值也会越大;

当r<0时,表明两个变量负相关,即一个变量值越大则另一个变量值反而会越小;

当r=0时,表明两个变量不是线性相关的(注意只是非线性相关),但是可能存在其他方式的相关性(比如曲线方式);

当r=1和-1时,意味着两个变量X和Y可以很好的由直线方程来描述,所有样本点都很好的落在一条直线上。

皮尔森距离

通过皮尔森系数定义:

皮尔森系数范围为[-1,1],因此皮尔森距离范围为[0,2]。

机器学习中的应用

皮尔森(pearson)相关系数、斯皮尔曼(spearman)相关系数和肯德尔(kendall)相关系数并称为统计学三大相关系数。其中,spearman和kendall属于等级相关系数亦称为“秩相关系数”,是反映等级相关程度的统计分析指标。pearson是用来反应俩变量之间相似程度的统计量,在机器学习中可以用来计算特征与类别间的相似度,即可判断所提取到的特征和类别是正相关、负相关还是没有相关程度。

Pearson相关系数的计算方法有三种形式,如下:

皮尔森相关系数是衡量线性关联性的程度,p的一个几何解释是其代表两个变量的取值根据均值集中后构成的向量之间夹角的余弦。

代码实现

python实现公式3的代码:

def pearson(vector1, vector2):

n = len(vector1)

#simple sums

sum1 = sum(float(vector1[i]) for i in range(n))

sum2 = sum(float(vector2[i]) for i in range(n))

#sum up the squares

sum1_pow = sum([pow(v, 2.0) for v in vector1])

sum2_pow = sum([pow(v, 2.0) for v in vector2])

#sum up the products

p_sum = sum([vector1[i]*vector2[i] for i in range(n)])

#分子num,分母den

num = p_sum - (sum1*sum2/n)

den = math.sqrt((sum1_pow-pow(sum1, 2)/n)*(sum2_pow-pow(sum2, 2)/n))

if den == 0:

return 0.0

return num/den

python实现公式1的代码:

# 计算特征和类的平均值

def calcMean(x,y):

sum_x = sum(x)

sum_y = sum(y)

n = len(x)

x_mean = float(sum_x+0.0)/n

y_mean = float(sum_y+0.0)/n

return x_mean,y_mean

# 计算Pearson系数

def calcPearson(x,y):

x_mean,y_mean = calcMean(x,y) # 计算x,y向量平均值

n = len(x)

sumTop = 0.0

sumBottom = 0.0

x_pow = 0.0

y_pow = 0.0

for i in range(n):

sumTop += (x[i]-x_mean)*(y[i]-y_mean)

for i in range(n):

x_pow += math.pow(x[i]-x_mean,2)

for i in range(n):

y_pow += math.pow(y[i]-y_mean,2)

sumBottom = math.sqrt(x_pow*y_pow)

p = sumTop/sumBottom

return p

# 计算每个特征的Pearson系数,返回数组

def calcAttribute(dataSet):

prr = []

n,m = shape(dataSet) # 获取数据集行数和列数

x = [0] * n # 初始化特征x和类别y向量

y = [0] * n

for i in range(n): # 得到类向量

y[i] = dataSet[i][m-1]

for j in range(m-1): # 获取每个特征的向量,并计算Pearson系数,存入到列表中

for k in range(n):

x[k] = dataSet[k][j]

prr.append(calcSpearman(x,y))

return prr

c语言皮尔森系数程序,皮尔森相关系数(Pearson correlation coefficient)-Go语言中文社区...相关推荐

  1. c语言皮尔森系数程序,pearson coefficient (皮儿森相关系数)计算及R语言实现 zz

    皮尔逊相关系数R语言例子 理解皮尔逊相关的两个角度 其一, 按照高中数学水平来理解, 皮尔逊相关(Pearson Correlation Coefficient)很简单, 可以看做将两组数据首先做Z分 ...

  2. ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient)、Spearman相关系数的简介、案例应用之详细攻略

    ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient).Spearman相关系数的简介.案例应用之详细攻略 目录 PPMCC皮尔逊相关系数的简介 ...

  3. ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介、案例应用(与spearman相关系数对比及其代码实现)之详细攻略

    ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介.案例应用(与spearman相关系数对比及其代码实现)之详细攻略 目录 PCC/PPMCC皮尔 ...

  4. 皮尔逊相关系数 Pearson correlation coefficient

    在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coeff ...

  5. Python--如何计算皮尔逊相关系数(Pearson correlation coefficient)

    皮尔逊系数 在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation ...

  6. R语言复相关或者多重相关性系数计算实战:Multiple Correlation Coefficient

    R语言复相关或者多重相关性系数计算实战:Multiple Correlation Coefficient 目录 R语言复相关或者多重相关性系数计算实战:Multiple Correlation Coe ...

  7. 皮尔逊相关系数(Pearson Correlation Coefficient, Pearson's r)

    Pearson's r,称为皮尔逊相关系数(Pearson correlation coefficient),用来反映两个随机变量之间的线性相关程度. 用于总体(population)时记作ρ (rh ...

  8. c 程序多语言,怎样在程序中利用C支持多国语言

    怎样在程序中利用C支持多国语言 本文以emule为例,探讨一下多国语言支持的实现.选择emule,因为它的多国语言支持实现的相当好,可以支持动态切换.而且最关键,它是开源的,可以直接通过源码来研究它的 ...

  9. 相关性分析:皮尔逊相关系数——python实现Pearson correlation coefficient

    一.理论知识: 要理解 Pearson 相关系数,首先要理解协方差(Covariance).协方差表示两个变量 X,Y 间相互关系的数字特征,其计算公式为: 当 Y = X 时,即与方差相同.当变量 ...

  10. 相关系数(correlation coefficient)是什么?相关的类型有哪些?有哪些常用的计算方法?不同形态的点分布与相关系数之间的关系?如何评判相关性的强弱?

    相关系数(correlation coefficient)是什么?相关的类型有哪些?有哪些常用的计算方法?不同形态的点分布与相关系数之间的关系?如何评判相关性的强弱? pandas api: pand ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task13. 罗马数字转整数
  2. ruby安装插件报错
  3. Anaconda-- conda 创建、激活、退出、删除虚拟环境
  4. ie8以下 es5常见的数组遍历方法不可用的解决方案 forEach,map,filter,some,every
  5. Linux 迎来 29 岁:从个人爱好到统治世界的操作系统内核
  6. 数组算法 往数组尾部添加一条数据1202
  7. php登录处理代码,php登录与退出登录实例代码
  8. 华为带动涨价?二季度中国市场智能手机均价涨了13%
  9. RNN-GRU-LSTM变体详解
  10. ESXi 内存回收机制
  11. 【docker】关于docker 中 镜像、容器的关系理解
  12. 表格超出_?那些年Word表格你肯定踩过的坑
  13. 如何处理 mka 格式的音频文件
  14. 工业制造行业B2B电商平台解决方案
  15. 2018年银联红包领取方法
  16. 各种传感器工作原理动态图
  17. Spring Boot 整合Swagger实现API管理
  18. MES系统中常见的数据采集方法
  19. 获取OpenHarmony源码
  20. Allegro中尺寸标注显示小数点后位数

热门文章

  1. 计算机网络英语词汇,计算机网络英语词汇
  2. 如何下载谷歌地球高程为TIF格式的文件
  3. 前馈控制与反馈控制对比
  4. ISO9001\ISO14001\OHSAS18001三体系快速认证申报须知
  5. android 将鼠标右键点击事件改为点击后返回功能
  6. 查看linux系统版本命令大全
  7. smart原则_OKR 文化:用 SMART 原则量化目标
  8. Centos7安装Ant
  9. Casewhen和Decode
  10. 安装 VS2010 中文旗舰版