项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.均值,方差

假设有个数组,一共n个元素,那么均值,方差的计算公式为
均值:
xˉ=1n∑i=1nxi\bar x = \frac{1}{n} \sum_{i=1}^n x_ixˉ=n1​i=1∑n​xi​

方差(整体方差):
var=1n∑i=1n(xi−xˉ)2var = \frac{1}{n} \sum_{i=1}^n (x_i - \bar x) ^ 2var=n1​i=1∑n​(xi​−xˉ)2

方差(样本方差):
S=1n−1∑i=1n(xi−xˉ)2S = \frac{1}{n-1} \sum_{i=1}^n (x_i - \bar x) ^ 2S=n−11​i=1∑n​(xi​−xˉ)2

其中,整体方差除的是n,样本方差除的是n-1。

2.协方差与皮尔逊系数

协方差(Covariance)用于衡量两个随机变量的联合变化程度。所以,计算协方差的时候,需要输入两个变量。而方差是协方差的一种特殊情况,即变量与自身的协方差。

cov(X,Y)=∑i=1n(xi−xˉ)(yi−yˉ)n−1cov(X, Y) = \frac{\sum_{i=1}^n(x_i - \bar x)(y_i - \bar y )}{n-1} cov(X,Y)=n−1∑i=1n​(xi​−xˉ)(yi​−yˉ​)​

如果分母上除以的是n-1,那么计算的是样本的协方差。如果除以的是n,计算的是整体协方差。

两个变量之间的皮尔逊相关系数为两个变量之间的协方差与标准差的商:
ρx,y=cov(X,Y)σxσy=E[(X−μx)(X−μy)]σxσy\rho_{x,y} = \frac{cov(X,Y)}{\sigma_x \sigma_y} = \frac{E[(X-\mu_x)(X-\mu_y)]}{\sigma_x \sigma_y}ρx,y​=σx​σy​cov(X,Y)​=σx​σy​E[(X−μx​)(X−μy​)]​

样本的皮尔逊系数,经常用字母rrr表示:

r=∑i=1n(Xi−X‾)(Yi−Y‾)∑i=1n(Xi−X‾)2∑i=1n(Yi−Y‾)2{\displaystyle r={\frac {\sum _{i=1}^{n}(X_{i}-{\overline {X}})(Y_{i}-{\overline {Y}})}{{\sqrt {\sum _{i=1}^{n}(X_{i}-{\overline {X}})^{2}}}{\sqrt {\sum _{i=1}^{n}(Y_{i}-{\overline {Y}})^{2}}}}}}r=∑i=1n​(Xi​−X)2​∑i=1n​(Yi​−Y)2​∑i=1n​(Xi​−X)(Yi​−Y)​

皮尔逊系数r,是一个衡量线性独立的无量纲数,其取值在[-1, 1]之间。如果r=1,表示完全线性相关。如果r=-1,表示完全线性负相关。r=0,即cov值为0,说明两个变量不相关,或者更准确地说叫作“线性无关”、“线性不相关”,表明X 与Y 两随机变量之间没有线性相关性,并非表示它们之间一定没有任何内在的(非线性)函数关系,X、Y二者并不一定是统计独立。

3.代码实现

前面说了这么多理论,接下来我们看具体实现。

import numpy as np
import math
import pandas as pddef t1():a = [5, 6, 16, 9]print(np.mean(a))print()# 整体方差除以nvar = np.var(a)print(var)# 自己计算方差var2 = [math.pow(x-np.mean(a), 2) for x in a]print(np.mean(var2))print()# 样本方差除以n-1sample_var = np.var(a, ddof=1)print(sample_var)print()# 标准差std = np.std(a)std2 = np.std(a, ddof=1)print(std)print(std2)t1()

输出结果:

9.018.5
18.524.6666666666666684.301162633521313
4.96655480858378

下面再看看皮尔逊系数的计算

def t2():a = [i for i in range(10)]b = [2*x + 0.1 for x in a]dic = {"x": a, "y": b}df = pd.DataFrame(dic)print(df)print()print("dfcorr is: ", df.corr())# 手动计算pearson系数n = len(a)abar = sum(a)/float(len(a))bbar = sum(b)/float(len(b))covab = sum([(x-abar)*(y-bbar) for (x, y) in zip(a, b)]) / nstda = math.sqrt(sum([math.pow(x-abar, 2) for x in a]) / n)stdb = math.sqrt(sum([math.pow(y-bbar, 2) for y in b]) / n)print()print(covab)print(stda)print(stdb)print()corrnum = covab / (stda * stdb)print("corrnum is: ", corrnum)t2()

输出结果

   x     y
0  0   0.1
1  1   2.1
2  2   4.1
3  3   6.1
4  4   8.1
5  5  10.1
6  6  12.1
7  7  14.1
8  8  16.1
9  9  18.1dfcorr is:       x    y
x  1.0  1.0
y  1.0  1.016.5
2.8722813232690143
5.7445626465380295corrnum is:  0.9999999999999998

x, y分别是两个变量, y = 2x + 0.1,两者具有完全的线性相关性,所以最后计算出来的pearson系数为1.0。

手动计算均值,方差,协方差,皮尔逊系数相关推荐

  1. 特征选择-皮尔逊系数、RFE(原理及代码)

    特征选择 1皮尔逊系数 1.1介绍: 1.2试用范围: 2.RFE递归特征消除 2.1介绍 2.2 python实现 1皮尔逊系数 1.1介绍: 皮尔逊相关也称为积差相关(或者积矩相关).我们假设有两 ...

  2. 利用协同过滤算法的皮尔逊系数:计算歌曲相似度

    想要什么 数据已经足够多了,我现在想法就是单独维护一张歌曲相似度的表,每首歌曲有10首相似度歌曲,并且有相似度的程度,介于0到1之间. 首先来明确我有什么,我有3张表. user表:用户1.4万左右 ...

  3. 皮尔逊相关系数_用皮尔逊系数探究事物之间的相关性

    我从本地mysql数据库中取出了曾经存下的书籍信息,试图找出价格和评论人数之间的关系.书籍的销售数据是从亚马逊网站上抓取下来的,如果你对这个过程感兴趣,可以阅读文章Find The Book Want ...

  4. 皮尔逊Pearson相关系数python代码实现

    皮尔逊相关系数简介 wiki介绍 皮尔逊积矩相关系数(英语:Pearson product-moment correlation coefficient,缩写:PPMCC,或PCCs,有时简称相关系数 ...

  5. 皮尔逊、斯皮尔曼、肯德尔相关系数python实现

    文章目录 一.肯德尔系数 1. 定义: 2. python实现 二.肯德尔系数.皮尔逊系数.斯皮尔曼系数 2. python实现 一.肯德尔系数 1. 定义: Kendall(肯德尔)系数的定义:n个 ...

  6. ML:图像数据、字符串数据等计算相似度常用的十种方法(余弦相似性、皮尔逊、闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离、马氏距离、汉明距离、编辑距离、杰卡德相似系数、相对熵/KL散度、Helli

    ML:图像数据.字符串数据等计算相似度常用的十种方法(余弦相似性.皮尔逊.闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离.马氏距离.汉明距离.编辑距离.杰卡德相似系数.相对熵/KL散度.Helli ...

  7. 相关系数之皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数(评价线性关系的相关系数)(第一部分)

    0.前言 一开始学这里的时候我感觉真的完犊子了,因为这部分的内容涉及到了概率论和数理统计的东西,概率论和数理统计虽然我现在在学,但我学的一团糟,翻书也毫无头绪,完了,现在就写一写自己怎么学的这两个系数 ...

  8. Pearson皮尔逊,Kendall肯德尔和Spearman斯皮尔曼三种相关分析方法的异同

    在SPSS软件相关分析中,pearson(皮尔逊),kendall(肯德尔)和spearman(斯伯曼/斯皮尔曼)三种相关分析方法有什么异同      两个连续变量间呈线性相关时,使用Pearson积 ...

  9. 相关系数(皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数)

    目录 总体皮尔逊Person相关系数: 样本皮尔逊Person相关系数: 两点总结: 假设检验:(可结合概率论课本假设检验部分) 皮尔逊相关系数假设检验: 更好的方法:p值判断方法 皮尔逊相关系数假设 ...

  10. 拉普拉斯, 高斯, 高尔顿, 皮尔逊, 戈塞特, 费歇尔对统计学的发展贡献

    由于人类的统计实践是随着计数活动而产生的,因此,统计发展史可以追溯到远古的原始社会,也就是说距今足有五千多年的漫长岁月.但是,能使人类的统计实践 上升到理论上予以概括总结的程度,即开始成为一门系统的学 ...

最新文章

  1. ImportError: libopenblas.so.0: cannot open shared object file
  2. 【codeforces 798A】Mike and palindrome
  3. 【LNOI2014】【BZOJ3626】NOIp2018模拟(三) LCA
  4. tomcat 7连接池配置与使用
  5. mybatis学习(42):mybatis的一级缓存
  6. Mr.J-- jQuery学习笔记(六)--attrprop方法
  7. Go实现Raft第二篇:选举
  8. JAVA求数组的平均数,众数,中位数
  9. DNGuard HVM 专业版 v2.7 正式发布。
  10. c语言大作业银行排队叫号系统,C语言银行叫号系统课程设计.doc
  11. 博科 HP H3C 华为FCSAN交换机配置业务zone以及联级配置
  12. java引入math包_java.math包应用
  13. KubeSphere 部署
  14. yaahp使用教程_如何用yaahp进行大量备选方案/评价对象的综合评价?
  15. (转载)MFC入门(四)  作者 zhoujiamurong
  16. 依赖注入依赖注入容器
  17. CentOS 7 安装极点五笔输入法
  18. 关于定义二维数组时为什么可以省略行,而不可以省略列
  19. EDA原理及应用 Quartus II 13建工程 个人笔记
  20. 用户行为分析面面观(之二)-----特征2:流动性

热门文章

  1. 最小二乘法2阶拟合数据
  2. 3.JUC线程高级-同步容器 ConcurrentHashMap
  3. 【二 HTTP编程】2. HTTP路由
  4. centos6.9去掉网关地址后依然可以ping通外网
  5. tomcat启动脚本
  6. pkcs1与pkcs8格式RSA私钥互相转换
  7. 【Remoting-4】
  8. 如何通过nrpe设置Windows 内存检测
  9. web 开发安全性问题
  10. ECS查询特权接口DescribeAccountAttributes发布