700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 皮尔逊相关系数公式手写代码【Python+详细注解】(Pearson correlation coefficient)

皮尔逊相关系数公式手写代码【Python+详细注解】(Pearson correlation coefficient)

时间:2024-02-25 13:19:53

相关推荐

皮尔逊相关系数公式手写代码【Python+详细注解】(Pearson correlation coefficient)

爱心目录

一.公式化简二.代码部分

一.公式化简

一般的我们学到的公式

一般我们学到的皮尔逊相关系数公式可能长这个样子,但是这个样子不好用代码实现呀!所以我们帮它化简成下面的样子

化简后的公式

二.代码部分

代码说明

程序中用Numpy库中自带的相关系数包进行了结果验证,结果是一样的,所以可以证明此代码的正确性!

【另外说明一点,Numpy库输出的是相关系数矩阵,只不过矩阵化了,是一个意思!】

运行环境

版PyCharm,Python版本是3.8

import numpy as npfrom 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)

如果对你有帮助的话请点个赞再走吧~你的支持是我做下去的动力呀!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。