最近写统计学习的作业,要用到降维方法,一股脑把 机器学习实战 上的代码敲上去就好了,要求中还要尝试其他降维方法,查了好多发现LDA可以,但是LDA要用到计算协方差矩阵,这玩意我之前就糊里糊涂的,协方差是变量之间的,还是样本之间的,百度了numpy里的资料,又看了很多博文,这才清楚。

1.协方差定义

多维随机变量:,注意是列向量,其有n个属性(或者n个变量variable、n个特征、n维),可不是n个样本!

通常我们会有一些样本每个样本可以看成一个多维随机变量样本点

我们需要分析任意两个维度之间的线性关系,也就是计算各维度两两之间的协方差,

这样各协方差组成了一个n×n的矩阵,称为协方差矩阵,所以协方差矩阵的维数和样本的个数没关系!

多个样本中 ,协方差矩阵的第i行第j列元素表示第i维特征与第j维特征的协方差:

注意N指N个样本,n指每个样本有n维,此公式是标量运算,  表示第k个样本的第i维数据,表示所有样本的第i维数据的均值,N-1指无偏估计

协方差矩阵:

注意这里是矢量运算 nx1,1xn结果nxn,表示第k个样本

2.协方差矩阵的性质

1)很明显,协方差矩阵是对称阵。
2)协方差矩阵为半正定矩阵,即其特征值>=0,其可以进行分解如下:

3.python的numpy.cov()函数

numpy.cov(my=Nonerowvar=Truebias=Falseddof=Nonefweights=Noneaweights=None)

(1)         m :array_like

包含多个变量和观察值的1-D或2-D数组。M的每一行代表一个变量(即特征)每一列都是对所有这些变量的单一观察(即每一列代表一个样本)。 另见下面的rowvar。

(2)         y :array_like, optional

另外一组变量和观察结果。 y具有与m相同的形式。至于有什么作用,参考后面的实例。

(3)         rowvar : bool,optional

如果rowvar为True(默认值),则每行代表一个变量,并在列中显示(即每一列为一个样本)。 否则,关系被转置:每列代表变量,而行包含观察值。

(4)         bias : bool,optional

默认归一化(False)为(N-1),其中N为给定观测次数(无偏估计)。如果bias为True,则归一化为N. 这些值可以通过使用numpy版本> = 1.5中的关键字ddof来覆盖。

(5)         ddof : int,optional

如果不是,偏移所隐含的默认值将被覆盖。请注意,ddof = 1将返回无偏估计,即使指定了权重和权重,ddof = 0将返回简单平均值。详见附注。 默认值为None。

(6)         fweights :array_like, int, optional

整数频率权重组成的1-D数组; 代表每个观察向量应重复的次数。

(7)         aweights :array_like, optional

观测矢量权重的1-D数组。对于被认为“重要”的观察,这些相对权重通常很大,而对于被认为不太重要的观察,这些相对权重较小如果ddof = 0,则可以使用权重数组将概率分配给观察向量。

python:

#x是2行3列,行数代表维数,列数代表样本个数,所以我们有3个样本,2个变量
#这和我们之前处理数据不同,之前都是行数代表样本个数,列数代表维数

#这里默认参数bias=False就是N-1,rowvar=True就是行数代表维数,列数代表样本个数

x=np.array([[1,2,9],[2,3,4]])
x
array([[1, 2, 9],[2, 3, 4]])np.cov(x)
array([[ 19.,   4.],[  4.,   1.]])

那我们需要想让行数代表样本个数,列数代表维数,只需更改上面说的参数rowvar=False:

np.cov(样本矩阵,rowvar=False)

不用numpy也可以,用上面的x,根据上面的协方差矩阵公式

#axis=1表示对每一行求平均

z=x.mean(axis=1).reshape(2,1)
z
array([[ 4.],[ 3.]])
y=np.dot(x-z,(x-z).T)/2
y
array([[ 19.,   4.],[  4.,   1.]])

最后提醒一下一般数学公式中都是一个样本是nx1的,行数代表维数,列数代表样本个数

参考链接:

https://www.cnblogs.com/terencezhou/p/6235974.html

https://blog.csdn.net/zhuzuwei/article/details/77848323

https://www.zhihu.com/question/24283387

协方差矩阵的定义性质与python实现相关推荐

  1. 协方差矩阵的定义及其计算公式 (转)

    协方差矩阵的定义及其计算公式 (2014-03-20 18:36:56) 转载▼   分类: matlab 协方差矩阵在机器学习中经常用到,查看wiki:http://zh.wikipedia.org ...

  2. 协方差与协方差矩阵的定义及计算

    这篇博客主要介绍协方差与协方差矩阵的定义及其计算 首先给出常用的一些数理统计的计算公式: 均值: 标准差: 方差: 这几个公式大家肯定都是比较熟悉的,这里需要注意的地方是标准差以及方差计算时:分母是n ...

  3. 定义类的Python示例

    The task to define a class in Python. 在Python中定义类的任务. Here, we are defining a class named Number wit ...

  4. python如何定义类_Python class定义类,Python类的定义(入门必读)

    在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念:对象才是一个具体存在的实体.从这个意 ...

  5. python函数定义及调用-python 中函数的定义以及调用先后顺序问题

    一.解释型语言 解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次.因此效率比较低. 解释型语言是相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间 ...

  6. 协方差矩阵相关概念、性质、应用意义及矩阵特征向量的用处

    1.协方差矩阵的概念: 这里在讲述协方差矩阵的性质之前先讲解一下协方差.方差以及两者之间的关系[统计学中的样本方差.样本均值看我的另外一篇文章{   浅谈均值.方差.标准差.协方差的概念及意义  }] ...

  7. 协方差矩阵的几何性质

    本篇笔记将以向量值随机变量X=(X1,-,Xn)TX=(X_1,\dots,X_n)^TX=(X1​,-,Xn​)T的协方差矩阵为例,研究其性质.在阅读笔记之前可先记下先导篇中的相关结论,尤其是该篇中 ...

  8. insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)

    Python中最简单的数据集合是一个列表(list).列表是方括号内用逗号分隔的任何数据项列表.通常,就像使用变量一样,使用=符号为Python列表分配名称. 如果列表中包含数字,则不要在其周围使用引 ...

  9. 如何使用其他文件中定义的类Python

    我在文件a.py中定义了一个类class A(object),现在想在b.py中的类B中某个函数中创建一个A的对象,需要如何操作呢? 我在b的头加了import a.py 然后使用语句 obj = A ...

  10. python使用del保留字定义一个函数-python中自定义函数的保留字是

    基本使用(推荐学习:Python视频教程)def function_name(parameters): expressions Python使用def开始函数定义,紧接着是函数名,括号内部为函数的参数 ...

最新文章

  1. C#编程概念系列(一):面向对象编程
  2. 每日一皮:有一天某程序员去买肉,要了一公斤...
  3. 翻译连载 | JavaScript轻量级函数式编程-第7章: 闭包vs对象 |《你不知道的JS》姊妹篇...
  4. linux关闭在线登录用户
  5. c# xmlhttp POST提取远程webservice数据
  6. pandas.Series.quantile
  7. 生活中有哪些越早明白越好的道理?
  8. 物联网形势大好,传感器前景可观
  9. JAVA输入输出IO流→File、RandomAccessFilse、字节流InputSream与OutputStream、字符流Reader与Writer、对象序列化Serializable
  10. 华为NP课程笔记12-组播
  11. 如何用c语言批量替换字符串,[C/C++]急速批量替换字符串
  12. JustView(Office、CAD)在线预览平台调用说明
  13. HCNA 认证课程笔记(1)
  14. 用cJSON.h/cJSON.c写JSON
  15. LTP(Linux Test Project)学习(五)——LTP代码学习
  16. 年薪5w和50w的职场人思考力有什么区别
  17. 树莓派用iPad做显示器
  18. python脚本案例-python+adb命令实现自动刷视频脚本案例
  19. codeforces 794E Choosing Carrot
  20. 【转】利用JMF进行多媒体编程

热门文章

  1. 相机35mm等效焦距
  2. usb-blaster 驱动在设备管理器处更新且安装成功后仍有黄色感叹号,显示:Windows 无法加载此软件的设备驱动程序。驱动程序可能损坏或丢失(代码:39)
  3. python中的defined什么意思_我的python怎么又not defined
  4. 视频直播技术详解之延迟优化
  5. Word 2016双击格式刷无法连用的问题
  6. 转福布斯荐75本经商必读
  7. 梦江湖获取服务器信息,一梦江湖4月10日更新了什么-一梦江湖4月10日更新内容一览_快吧手游...
  8. ubuntu 19.04 修改登陆界面背景
  9. “2020 博客之星”年度总评选 TOP 200 名单已出,速来认领!
  10. AndroidQ SystemUI之锁屏加载(下)密码锁屏