在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()的更多相关文章

  1. Python Pandas的使用 !!!!!详解

     Pandas是一个基于python中Numpy模块的一个模块 Python在数据处理和准备⽅⾯⼀直做得很好,但在数据分析和建模⽅⾯就差⼀些.pandas帮助填补了这⼀空⽩,使您能够在Python中执 ...

  2. python 中numpy的var,std及cov

    var:表示方差, 即各项-均值的平方求和后再除以N , std:表示标准差,是var的平方根. cov:协方差 ,与var类似,但是除以(N-1)

  3. python numpy的var std cov研究

    var:表示方差, 即各项-均值的平方求和后再除以N , std:表示标准差,是var的平方根. cov:协方差 ,与var类似,但是除以(N-1) import numpy as np # 构建测试 ...

  4. Python之路【第二十四篇】Python算法排序一

    什么是算法 1.什么是算法 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出.简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果. ...

  5. 主成分分析 (PCA) 与其高维度下python实现(简单人脸识别)

    Introduction 主成分分析(Principal Components Analysis)是一种对特征进行降维的方法.由于观测指标间存在相关性,将导致信息的重叠与低效,我们倾向于用少量的.尽可 ...

  6. 使用Python进行描述性统计

    目录 1 描述性统计是什么?2 使用NumPy和SciPy进行数值分析 2.1 基本概念 2.2 中心位置(均值.中位数.众数) 2.3 发散程度(极差,方差.标准差.变异系数) 2.4 偏差程度(z ...

  7. 机器学习笔记----四大降维方法之PCA(内带python及matlab实现)

    大家看了之后,可以点一波关注或者推荐一下,以后我也会尽心尽力地写出好的文章和大家分享. 本文先导:在我们平时看NBA的时候,可能我们只关心球员是否能把球打进,而不太关心这个球的颜色,品牌,只要有3D效 ...

  8. 《利用Python进行数据分析: Python for Data Analysis 》学习随笔

    NoteBook of <Data Analysis with Python> 3.IPython基础 Tab自动补齐 变量名 变量方法 路径 解释 ?解释, ??显示函数源码 ?搜索命名 ...

  9. Python 代码覆盖率统计工具 coverage.py

    coverage.py是一个用来统计python程序代码覆盖率的工具.它使用起来非常简单,并且支持最终生成界面友好的html报告.在最新版本中,还提供了分支覆盖的功能. 官方网站: http://ne ...

随机推荐

  1. where 命令

    在当前目录及path环境变量指定的目录中搜索相应文件 例:where msbuild 查找msbuild的位置

  2. mysql创建定时器(event),查看定时器,打开定时器,设置定时器时间

    由于项目需要创建定时器(evevt),所以就百度了一下,发现基本都是来源于一个模板,有些功能还不全,现在自己总结一下. 注:mysql版本是从5.1开始才支持event的.如果你的版本低于5.1就先升 ...

  3. cobbler配置解析

    1.Cobbler命令说明: 命令名称 命令用途 cobbler check 检查cobbler配置 cobbler list 列出所有的cobbler元素 cobbler report 列出元素的详 ...

  4. 利用 setInterval 确定用户的动作是否停止

    最近遇到一个问题,对于某一个持续的动作,希望能够知晓用户何时停止这个动作, 比如说 我们通过注册onresize事件,去监听浏览器窗口变化的事件,在这个事件里面,我们可能要执行大量的计算去确定窗口变化 ...

  5. (转)游戏引擎中三大及时光照渲染方法介绍(以unity3d为例)

    重要:在目前市面上常见的游戏引擎中,主要采用以下三种灯光实现方式: 顶点照明渲染路径细节 Vertex Lit Rendering Path Details 正向渲染路径细节 Forward Rend ...

  6. Lock()与RLock()锁

    资源总是有限的,程序运行如果对同一个对象进行操作,则有可能造成资源的争用,甚至导致死锁 也可能导致读写混乱 锁提供如下方法: 1.Lock.acquire([blocking]) 2.Lock.rel ...

  7. JAVA数据类型(转载)

    JAVA中值类型的只有short,char,byte,int,long,double,float,boolean八大基本类型,其他的所有类型都是引用类型. 首先我们都知道在编程中赋值运算“=”的意思是 ...

  8. XtraBackup 备份原理

    来着淘宝技术: http://mysql.taobao.org/monthly/2016/03/07/ https://github.com/alibaba/AliSQL 前言 Percona Xtr ...

  9. test5

    ## 前言 因为vs2010没有集成mvvmlight 所以想要使用mvvmlight的relaycomman需要引用dll 需要测试某个功能的时候,不能进行快带的集成 ## 引用mvvmlight ...

  10. MySQL+Navicat for MySQL安装

    一.安装MySQL 1.下载MySQL http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.10-winx64.zip 2.安装 2.1解压安装包 ...