协方差矩阵的定义性质与python实现
最近写统计学习的作业,要用到降维方法,一股脑把 机器学习实战 上的代码敲上去就好了,要求中还要尝试其他降维方法,查了好多发现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
(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=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实现相关推荐
- 协方差矩阵的定义及其计算公式 (转)
协方差矩阵的定义及其计算公式 (2014-03-20 18:36:56) 转载▼ 分类: matlab 协方差矩阵在机器学习中经常用到,查看wiki:http://zh.wikipedia.org ...
- 协方差与协方差矩阵的定义及计算
这篇博客主要介绍协方差与协方差矩阵的定义及其计算 首先给出常用的一些数理统计的计算公式: 均值: 标准差: 方差: 这几个公式大家肯定都是比较熟悉的,这里需要注意的地方是标准差以及方差计算时:分母是n ...
- 定义类的Python示例
The task to define a class in Python. 在Python中定义类的任务. Here, we are defining a class named Number wit ...
- python如何定义类_Python class定义类,Python类的定义(入门必读)
在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念:对象才是一个具体存在的实体.从这个意 ...
- python函数定义及调用-python 中函数的定义以及调用先后顺序问题
一.解释型语言 解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次.因此效率比较低. 解释型语言是相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间 ...
- 协方差矩阵相关概念、性质、应用意义及矩阵特征向量的用处
1.协方差矩阵的概念: 这里在讲述协方差矩阵的性质之前先讲解一下协方差.方差以及两者之间的关系[统计学中的样本方差.样本均值看我的另外一篇文章{ 浅谈均值.方差.标准差.协方差的概念及意义 }] ...
- 协方差矩阵的几何性质
本篇笔记将以向量值随机变量X=(X1,-,Xn)TX=(X_1,\dots,X_n)^TX=(X1,-,Xn)T的协方差矩阵为例,研究其性质.在阅读笔记之前可先记下先导篇中的相关结论,尤其是该篇中 ...
- insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)
Python中最简单的数据集合是一个列表(list).列表是方括号内用逗号分隔的任何数据项列表.通常,就像使用变量一样,使用=符号为Python列表分配名称. 如果列表中包含数字,则不要在其周围使用引 ...
- 如何使用其他文件中定义的类Python
我在文件a.py中定义了一个类class A(object),现在想在b.py中的类B中某个函数中创建一个A的对象,需要如何操作呢? 我在b的头加了import a.py 然后使用语句 obj = A ...
- python使用del保留字定义一个函数-python中自定义函数的保留字是
基本使用(推荐学习:Python视频教程)def function_name(parameters): expressions Python使用def开始函数定义,紧接着是函数名,括号内部为函数的参数 ...
最新文章
- C#编程概念系列(一):面向对象编程
- 每日一皮:有一天某程序员去买肉,要了一公斤...
- 翻译连载 | JavaScript轻量级函数式编程-第7章: 闭包vs对象 |《你不知道的JS》姊妹篇...
- linux关闭在线登录用户
- c# xmlhttp POST提取远程webservice数据
- pandas.Series.quantile
- 生活中有哪些越早明白越好的道理?
- 物联网形势大好,传感器前景可观
- JAVA输入输出IO流→File、RandomAccessFilse、字节流InputSream与OutputStream、字符流Reader与Writer、对象序列化Serializable
- 华为NP课程笔记12-组播
- 如何用c语言批量替换字符串,[C/C++]急速批量替换字符串
- JustView(Office、CAD)在线预览平台调用说明
- HCNA 认证课程笔记(1)
- 用cJSON.h/cJSON.c写JSON
- LTP(Linux Test Project)学习(五)——LTP代码学习
- 年薪5w和50w的职场人思考力有什么区别
- 树莓派用iPad做显示器
- python脚本案例-python+adb命令实现自动刷视频脚本案例
- codeforces 794E Choosing Carrot
- 【转】利用JMF进行多媒体编程
热门文章
- 相机35mm等效焦距
- usb-blaster 驱动在设备管理器处更新且安装成功后仍有黄色感叹号,显示:Windows 无法加载此软件的设备驱动程序。驱动程序可能损坏或丢失(代码:39)
- python中的defined什么意思_我的python怎么又not defined
- 视频直播技术详解之延迟优化
- Word 2016双击格式刷无法连用的问题
- 转福布斯荐75本经商必读
- 梦江湖获取服务器信息,一梦江湖4月10日更新了什么-一梦江湖4月10日更新内容一览_快吧手游...
- ubuntu 19.04 修改登陆界面背景
- “2020 博客之星”年度总评选 TOP 200 名单已出,速来认领!
- AndroidQ SystemUI之锁屏加载(下)密码锁屏