皮尔逊相关系数公式手写代码【Python+详细注解】(Pearson correlation coefficient)
爱心目录
- 一.公式化简
- 二.代码部分
一.公式化简
- 一般的我们学到的公式:
一般我们学到的皮尔逊相关系数公式可能长这个样子,但是这个样子不好用代码实现呀!所以我们帮它化简成下面的样子
- 化简后的公式:
二.代码部分
代码说明:
程序中用Numpy库中自带的相关系数包进行了结果验证,结果是一样的,所以可以证明此代码的正确性!
【另外说明一点,Numpy库输出的是相关系数矩阵,只不过矩阵化了,是一个意思!】运行环境:
2019版PyCharm,Python版本是3.8
import numpy as np
from math import *def myltipl(a,b):"""作用:求取∑xiyi(序列1和序列2所有元素分别相乘再相加)地位:总体公式的子公式:param a:x序列:param b:y序列:return:"""sumofab = 0.0for i in range(len(a)):temp = a[i]*b[i]sumofab+=tempreturn sumofabdef cal_pccs(x,y):"""总体公式(Pearson)皮尔逊相关系数总体计算公式:param x:序列1:param y:序列2:return:返回相关系数"""n = len(x) # 获取“序列1”的长度# 求和sum1=sum(x) # ∑xi 计算”序列1“所有元素的和sum2=sum(y) # ∑yj 计算“序列2”所有元素的和# 求乘积之和sumofxy = myltipl(x,y) # 求∑xiyi# 求平方和sumofx2 = sum([pow(i,2) for i in x]) # pow(i,2)函数功能求的是i的平方sumofy2 = sum([pow(j,2) for j in y])num = sumofxy-(float(sum1) * float(sum2) / n) # 公式中分子的“被减数 - 减数”# 计算皮尔逊相关系数den = sqrt((sumofx2 - float(sum1**2) / n) * (sumofy2 -float(sum2**2) / n)) # 公式中的分母return num/den # 返回最终的计算结果def Zpow():print(pow(2,2))if __name__=='__main__':"""-----------数据集-------------------"""x = np.array([1,2,3,4,5,6,7,8,9]) # 这两个序列是测试用的y = np.array([1,2,3,4,5,6,7,8,9])"""-----------手写公式-------------------"""corr_Handcraft = cal_pccs(x,y) # 输入两个序列"""-----------numpy库写公式-------------------"""corr_Numpy = np.corrcoef(x, y)"""-----------展示-------------------"""print("手写皮尔逊相关系数公式的结果:",corr_Handcraft)print("运用numpy包写的皮尔逊相关系数公式:\n",corr_Numpy)
如果对你有帮助的话请点个赞再走吧~你的支持是我做下去的动力呀!
皮尔逊相关系数公式手写代码【Python+详细注解】(Pearson correlation coefficient)相关推荐
- python基础代码事例-推公式到写代码-python基础
推公式到写代码-python基础 希望你能像看小说看杂文一样的心情看完这一系列,因为学习不总是枯燥的,希望像聊天一样娓娓道来. 专辑系列的阅读对象是那些懂些高等数学和线性代数,但没有经过编码训练的人. ...
- 手写算法-python代码实现Ridge(L2正则项)回归
手写算法-python代码实现Ridge回归 Ridge简介 Ridge回归分析与python代码实现 方法一:梯度下降法求解Ridge回归参数 方法二:标准方程法实现Ridge回归 调用sklear ...
- 多元线性回归算法python实现_手写算法-Python代码推广多元线性回归
1.梯度下降-矩阵形式 上篇文章介绍了一元线性回归,包括Python实现和sklearn实现的实例.对比,以及一些问题点,详情可以看这里: 链接: 手写算法-Python代码实现一元线性回归 里面封装 ...
- python手写代码面试_常见Python面试题—手写代码系列
原标题:常见Python面试题-手写代码系列 1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reverse tempList = [1,2,3,4] tempList.reverse( ...
- python手写代码面试_常见Python面试题 — 手写代码系列
原标题:常见Python面试题 - 手写代码系列 作者: Peace & Love 来自:https://blog.csdn.net/u013205877/article/details/77 ...
- python在哪里写代码比较适合-程序员面试被要求手写代码,你与顶级程序员的差别在哪?...
原标题:程序员面试被要求手写代码,你与顶级程序员的差别在哪? 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 所以小的给各位看官们准备了收藏已久的视频教程分享给大家 ...
- python在哪里写代码-程序员面试被要求手写代码,你与顶级程序员的差别在哪?...
原标题:程序员面试被要求手写代码,你与顶级程序员的差别在哪? 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 所以小的给各位看官们准备了收藏已久的视频教程分享给大家 ...
- ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介、案例应用(与spearman相关系数对比及其代码实现)之详细攻略
ML之FE:PCC皮尔逊相关系数(Pearson correlation coefficient)的简介.案例应用(与spearman相关系数对比及其代码实现)之详细攻略 目录 PCC/PPMCC皮尔 ...
- python是如何实现进程池和线程池的_高并发:线程、线程锁与线程池(精华),手写代码实现线程池...
前文: 单线程--多线程的开启--线程锁--线程同步工具--手写连接池--连接池工具类. 一.线程 1.线程的概念 2.线程与进程的关系 3.定义: 区别:如上!!! 4.wait()和sleep() ...
- 多元线性回归,岭回归,lasso回归(具体代码(包括调用库代码和手写代码实现)+一点点心得)
最近数据挖掘导论老师布置了一项作业,主要就是线性回归的实现,笔者之前听过吴恩达的线性回归的网课,但一直没有进行代码的实现,这次正好相对系统的整理一下,方便各位同学的学习,也希望能够对其进行优化,优化的 ...
最新文章
- Leaflet中原生方式实现测距
- 温州大学《机器学习》课程代码(三)逻辑回归
- 更新整理本人全部博文中提供的代码与工具(Java,2014.09)
- 如果没有就插入,如果有就更新
- 检测和语义分割_分割和对象检测-第1部分
- 十动然鱼!《闲鱼年会经济数据》来了:卖得最快的奖品还是它
- arpspoof渗透工具使用方法详解+实战
- 错误:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
- B代表哪一种氨基酸?B和b代表的氨基酸一样吗?
- 打字会出声音的计算机,笔记本电脑打字时发出声响敲击电脑时也有回声发出怎么办? 爱问知识人...
- 阿里巴巴图库下载的在线图标显示为方框的问题
- 爬虫-1-基础和urllib
- 海信e5k和e5h区别 对比评测 哪个好
- Android 截屏并保存到本地(兼容Android 10.0)
- 远程控制计算机控制不,远程控制电脑为什么打不了字
- JavaScript是解释型语言--V8、JIT
- 数据,数据对象,数据元素,数据项的关系图
- 许昌一高2021年高考成绩查询,2021年许昌最好的高中排名,许昌重点高中升学率排名...
- 《工业APP白皮书》发布,鼎捷软件ERP,MES等系统方案获专业推荐
- mac隐藏文件及查看隐藏文件