皮尔森相关系数(Pearson correlation coefficient)
- 概述
- 定义
- 物理意义
- 皮尔森距离
- 机器学习中的应用
- 代码实现
概述
皮尔森相关系数也称皮尔森积矩相关系数(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 sumssum1 = sum(float(vector1[i]) for i in range(n))sum2 = sum(float(vector2[i]) for i in range(n))#sum up the squaressum1_pow = sum([pow(v, 2.0) for v in vector1])sum2_pow = sum([pow(v, 2.0) for v in vector2])#sum up the productsp_sum = sum([vector1[i]*vector2[i] for i in range(n)])#分子num,分母dennum = 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.0return 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)/ny_mean = float(sum_y+0.0)/nreturn x_mean,y_mean# 计算Pearson系数
def calcPearson(x,y):x_mean,y_mean = calcMean(x,y) # 计算x,y向量平均值n = len(x)sumTop = 0.0sumBottom = 0.0x_pow = 0.0y_pow = 0.0for 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/sumBottomreturn 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
皮尔森相关系数(Pearson correlation coefficient)相关推荐
- 皮尔森(Pearson correlation coefficient)相关系数—统计学三大相关系数之一
概述 皮尔森相关系数也称皮尔森积矩相关系数(Pearson product-moment correlation coefficient) ,是一种线性相关系数,是最常用的一种相关系数.记为r,用来反 ...
- ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient)、Spearman相关系数的简介、案例应用之详细攻略
ML之PPMCC:PPMCC皮尔逊相关系数(Pearson correlation coefficient).Spearman相关系数的简介.案例应用之详细攻略 目录 PPMCC皮尔逊相关系数的简介 ...
- ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介、案例应用(与spearman相关系数对比及其代码实现)之详细攻略
ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介.案例应用(与spearman相关系数对比及其代码实现)之详细攻略 目录 PCC/PPMCC皮尔 ...
- 皮尔逊相关系数 Pearson correlation coefficient
在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation coeff ...
- 相关系数(correlation coefficient)是什么?相关的类型有哪些?有哪些常用的计算方法?不同形态的点分布与相关系数之间的关系?如何评判相关性的强弱?
相关系数(correlation coefficient)是什么?相关的类型有哪些?有哪些常用的计算方法?不同形态的点分布与相关系数之间的关系?如何评判相关性的强弱? pandas api: pand ...
- Python--如何计算皮尔逊相关系数(Pearson correlation coefficient)
皮尔逊系数 在统计学中,皮尔逊相关系数( Pearson correlation coefficient),又称皮尔逊积矩相关系数(Pearson product-moment correlation ...
- 相关性分析:皮尔逊相关系数——python实现Pearson correlation coefficient
一.理论知识: 要理解 Pearson 相关系数,首先要理解协方差(Covariance).协方差表示两个变量 X,Y 间相互关系的数字特征,其计算公式为: 当 Y = X 时,即与方差相同.当变量 ...
- 皮尔逊相关系数(Pearson Correlation Coefficient, Pearson's r)
Pearson's r,称为皮尔逊相关系数(Pearson correlation coefficient),用来反映两个随机变量之间的线性相关程度. 用于总体(population)时记作ρ (rh ...
- 如何理解皮尔逊相关系数(Pearson Correlation Coefficient)?
https://www.zhihu.com/question/19734616?sort=created
- 人工智能数学基础4:离差、平均差、方差、标准差、协方差、皮尔森相关系数
一.离差(Deviation) 离差即标志变动度,又称"偏差",是观测值或估计量的平均值与真实值之间的差,是反映数据分布离散程度的量度之一,或说是反映统计总体中各单位标志值差别大小 ...
最新文章
- 程序员又背锅?美团外卖声明“杀熟会员”是技术原因,软件定位缓存导致配送费不准!网友:程序员太惨!...
- Mysql Cluster节点类型
- window与共享文件夹访问相关的四个服务
- php smarty fetch,fetch()
- 技术系列课|从NE264到NE265:视频编码技术缔造美好生活
- HDU2089——不要62 (数位DP)
- 深圳零基础自学python_深圳学习python
- Java分页查询工具类
- 物联网数据终端演进之道
- c语言float转换为int_C语言的隐式类型转换和显示类型转换
- js如何监听元素事件是否被移除_JS移除事件监听的方法 .removeEventListener( )
- 外卖小哥等餐被打,“成年人的崩溃,只在一瞬间”
- JSF请求处理过程(一) FacesServlet初始化
- 服务器需要哪些芯片,云计算的服务器需要芯片
- Result的类型分析和总结
- 心脑血管应该注意那些?
- win10系统无法切换输入法无法输出中文
- Kotlin/DSL(Anko),原汁原味Kotlin开发Android---Activity Fragment与AnkoUI分离,强大的复用,更加便捷的开发
- 东京奥运会将采用人脸识别系统 加强安检
- SQLSERVER 多表联合查询(join)