python cov()
在PCA中涉及到了方差var和协方差cov,下面详细了解这两个函数的用法。numpy中var和cov函数求法和MATLAB中var和cov函数求法类似。
首先均值,样本方差,样本协方差公式分别为
其中样本方差公式中为什么除的n-1而不是n,样本协方差同样除的是n-1而不是n,请看此处:http://blog.csdn.net/maoersong/article/details/21819957,如果除的是n,那么求的方差就不是随机抽取变量组成样本的方差,而是整个空间的方差。
下面就介绍MATLAB中var和cov函数的用法
以下内容转载出处:http://blog.sina.com.cn/s/blog_9e67285801010twv.html
函数名称:cov
函数功能: 求协方差矩阵
函数用法: cov(X) % cov(X,0) = cov(X)
cov(X,Y) % X,Y必须是各维数都相同的矩阵
cov(X,1) % 除以N而不是N-1
cov(X,Y,1) % 除以N而不是N-1
详细描述:
......................................................................
if X is a vector向量,cov(X)输出的是这个向量的方差
例:
>> A = [4 1 3];
>> AA = cov(A)
AA =
2.3333
>> a = mean(A)
a =
2.6667
>> AAA = 1/3*((4-a)^2+(1-a)^2+(3-a)^2)
AAA =
1.5556
>> AAAA= 1/2*((4-a)^2+(1-a)^2+(3-a)^2) %同样,这个方差不是真正意义的方差,而是对样本统计方差的一个无偏估计值
AAAA =
2.3333
..............................................................................
对于矩阵来说,matlab把每行看做一个观察值,把每列当做一个变量,也就是说对于一个4*3的矩阵求协方差矩阵,matlab会认为存在三个变量,即会求出一个3*3的协方差矩阵。
其中,对角线元素为对应变量的方差无偏估计值,其他位置为对应变量间的 协方差无偏估计值(即除的是N-1)
.......................................................................
例1:
>> X = [1 5 6; 4 3 9 ; 4 2 9; 4 7 2]
X =
1 5 6
4 3 9
4 2 9
4 7 2
>> Y = cov(X)
Y =
2.2500 -0.7500 0.5000
-0.7500 4.9167 -7.1667
0.5000 -7.1667 11.0000
为探究过程,以Y(1,1)和Y(1,2)为例进行验证
>> x=X(:,1);
>> sum((x-3.25).^2)/3
ans =
2.2500
>> y = X (:,2);
>> aa = x'*y/3
aa =
-0.7500
......................................................
对于cov(X,Y)
X、Y必须是各维数都相等的矩阵,其功能是把X中所有元素看做一个变量的样本,Y中所有元素看做另外一个变量的样本,把矩阵中每个对应位置看做一个联合观察值
函数实现的是求出两个变量的协方差矩阵
例2:
>> X
X =
1 5 6
4 3 9
4 2 9
4 7 2
>> Y = [1 6 7; 7 5 9 ; 1 6 4 ; 2 9 2]
Y =
1 6 7
7 5 9
1 6 4
2 9 2
>> cov(X,Y)
ans =
6.9697 4.4242
4.4242 8.4470
现在用(1,1)和(1,2)位置验证
>> sum(sum((X-mean(mean(X))).^2))/11 %把X中每个元素都看做一个变量的样本,求其方差的无偏估计值
ans =
6.9697
>> sum(sum((X-mean(mean(X))).*(Y-mean(mean(Y)))))/11 %把X、Y矩阵对应位置元素看做一个联合样本,根据公式E[(X-EX)*(Y-EY)]求协方差
ans =
4.4242
.....................................................................................
cov(X,1) 和 cov(X,Y,1) 与之前的求解过程一致,不同的是,其求出的是协方差,而不是样本的协方差无偏估计值,即其除以的是N 而不是N-1
例3:
>> cov(X,1)
ans =
1.6875 -0.5625 0.3750
-0.5625 3.6875 -5.3750
0.3750 -5.3750 8.2500
>> x=X(:,1);
sum((x-3.25).^2)/4 %不同之处
ans =
1.6875
>> y = X (:,2);
>> y = y - 4.25;
>> aa = x'*y/4 %不同之处
aa =
-0.5625
例4:
X =
1 5 6
4 3 9
4 2 9
4 7 2
>> Y = [1 6 7; 7 5 9 ; 1 6 4 ; 2 9 2]
Y =
1 6 7
7 5 9
1 6 4
2 9 2
>> cov(X,Y)
ans =
6.9697 4.4242
4.4242 8.4470
>> a =cov(X,Y,1)
a =
6.3889 4.0556
4.0556 7.7431
>> a.*12/11 %看出来了吧
ans =
6.9697 4.4242
4.4242 8.4470
python cov()的更多相关文章
- Python Pandas的使用 !!!!!详解
Pandas是一个基于python中Numpy模块的一个模块 Python在数据处理和准备⽅⾯⼀直做得很好,但在数据分析和建模⽅⾯就差⼀些.pandas帮助填补了这⼀空⽩,使您能够在Python中执 ...
- python 中numpy的var,std及cov
var:表示方差, 即各项-均值的平方求和后再除以N , std:表示标准差,是var的平方根. cov:协方差 ,与var类似,但是除以(N-1)
- python numpy的var std cov研究
var:表示方差, 即各项-均值的平方求和后再除以N , std:表示标准差,是var的平方根. cov:协方差 ,与var类似,但是除以(N-1) import numpy as np # 构建测试 ...
- Python之路【第二十四篇】Python算法排序一
什么是算法 1.什么是算法 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出.简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果. ...
- 主成分分析 (PCA) 与其高维度下python实现(简单人脸识别)
Introduction 主成分分析(Principal Components Analysis)是一种对特征进行降维的方法.由于观测指标间存在相关性,将导致信息的重叠与低效,我们倾向于用少量的.尽可 ...
- 使用Python进行描述性统计
目录 1 描述性统计是什么?2 使用NumPy和SciPy进行数值分析 2.1 基本概念 2.2 中心位置(均值.中位数.众数) 2.3 发散程度(极差,方差.标准差.变异系数) 2.4 偏差程度(z ...
- 机器学习笔记----四大降维方法之PCA(内带python及matlab实现)
大家看了之后,可以点一波关注或者推荐一下,以后我也会尽心尽力地写出好的文章和大家分享. 本文先导:在我们平时看NBA的时候,可能我们只关心球员是否能把球打进,而不太关心这个球的颜色,品牌,只要有3D效 ...
- 《利用Python进行数据分析: Python for Data Analysis 》学习随笔
NoteBook of <Data Analysis with Python> 3.IPython基础 Tab自动补齐 变量名 变量方法 路径 解释 ?解释, ??显示函数源码 ?搜索命名 ...
- Python 代码覆盖率统计工具 coverage.py
coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...
随机推荐
- pip cannot confirm SSL certificate: SSL module is not available
centos6.8编译安装python2.7之后,使用pip报错:pip cannot confirm SSL certificate: SSL module is not available 解决方 ...
- 设计模式学习笔记(1)Iterator
Iterator 模式 public interface Iterator { public boolean hasNext(); public Object next(); } public int ...
- iKcamp|基于Koa2搭建Node.js实战(含视频)☞ 解析JSON
视频地址:https://www.cctalk.com/v/15114923886141 JSON 数据 我颠倒了整个世界,只为摆正你的倒影. 前面的文章中,我们已经完成了项目中常见的问题,比如 路由 ...
- Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数
Unity C# 调用 C++ DLL 并在 DLL 中调用 C# 的回调函数~~~ 呵呵... 看着有点晕.. 再解释一下就是 在Unity中 使用 C# 调用 C++ 写的 DLL, 但是在 ...
- DELPHI WM_CopyData 用法
unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...
- python中迭代问题
迭代list的时候不能修改这个list,否则,可能会出错. numbers=[1,0,3,5,0] numbers.sort() print(numbers) print('************* ...
- proc
1. /proc 下文件的内容是动态创建的,当文件可写时可用作控制和配置目的. 2. 在某个进程读取 /proc 文件时,内核会分配一个内存页,驱动程序通过这个内存页将数据返回到用户空间 (read( ...
- zabbix3.2的server和zabbix-agent2.2怎么监控MySQL的办法
zabbix官方支持监控MySQL,但直接使用默认的模板是不可用的,还需要经过额外的设置才可以使用.如果只需要对mysql数据库做简单的监控,zabbix自带的模板完全能够满足要求:如果有更高的需求那 ...
- Docker commit 制作weblogic镜像
第一:前提条件 1.本机必须已经安装了docker 容器 2.pull 一个基础的镜像 如图:rastasheep/ubuntu-sshd 第二:利用docker commit 命令 将容器的状态 ...
- Spring框架中Bean管理的常用注解
1. @Component:组件.(作用在类上)可以作用在任何一个类上 2. Spring中提供@Component的三个衍生注解:(功能目前来讲是一致的) * @Controller -- 作用在W ...