协方差矩阵的研究

11 题目的主要研究内容

(1)协方差矩阵的定义、计算过程。

        协方差(Covariance):在概率论和统计学中用于衡量两个变量的总体误差。协方差在某种意义上给出了两个变量线性相关性的强度以及这些变量的尺度。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。协方差矩阵(也称离差矩阵),其 i, j 位置的元素是第 i 个与第 j 个随机向量(即随机变量构成的向量)之间的协方差。 协方差矩阵将所有变量的协方差关系用矩阵的形式表现出来。

        协方差矩阵计算过程:是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值。从数值来看,协方差的数值越大,两个变量同向程度也就越大,反之亦然。

(2)具体数据,手动推演和上机实现。

(3)手动推演和上机实现两种结果的比较分析。

12 题目研究的工作基础或实验条件

(1)手动推演中已知计算公式,给定初始数组;软件实现中已知程序代码的设计和算法应用。

(2)软件环境(开发工具可用PyCharm)使用numpy库的cov函数。

13 设计思想

        协方差矩阵是一种更容易理解的方式,它将整个维度中的关系定义为每两个随机变量之间的关系。 协方差矩阵是一个对称的矩阵,而且对角线是各个维度的方差。

        针对一维的样本集合时,求出的协方差就是方差,即方差是协方差的一种特殊情况,都是反应集合中各元素离散度的。

        针对二维的样本集合时,求出的协方差就是两维度间的相关性,包括正相关性、负相关性或者无关。

        针对三维及以上维度的样本集合时,求出的协方差是各个维度总体的相关性,针对各维度之间的关系,所以二维以上计算协方差,用的就是协方差矩阵。协方差矩阵是计算不同维度之间的协方差,样本矩阵的每行是一个样本,每列是一个维度。

协方差矩阵的计算公式:

         这里的X、Y表示两个变量空间。用机器学习的话来讲,就是样本有x、y两个特征,而X就是包含所有样本的x特征的集合, Y就是包含所有样本的y特征的集合。协方差如果为正 说明X,Y同向变化,协方差越大说明同向程度越高,协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。

        通过PyCharm Community Edition 2021.3.3软件环境来实现上机功能,提供了一个带编码补全,代码片段,支持代码折叠和分割窗口的智能、可配置的编辑器,可帮助用户更快更轻松的完成编码工作。

        在软件中可以使用Tab 键快速编写程序,当你什么也没有输入的时候,Tab只是4个空格的缩进;当你输入前几个字母,PyCharm会智能的列出所有的候选项,这时候,你只要按下Tab,会默认选择第一个候选项。提供输入速度,非常流畅。

1.4 流程图

        为了更清楚的对实验结果进行比较分析,可以通过流程图直接观察,软件实现和手动推演协方差矩阵的具体过程,其中两者给出的初始矩阵都是相同的,上机实现和手动推演流程图如图1.1所示:

1.1  上机实现和手动推演流程图

15 主要程序代码(要求必须有注释)

使用numpy库的cov函数:

import numpy as np   #导入 numpy

y = np.array([[1,2,3], [3,1,1]])  #给出数组

print(y)

print(y.shape)

print(np.cov(y, rowvar=False))

# 给定一组数据,计算有特征引导的协方差矩阵

根据协方差矩阵计算公式:

Import numpy as np

y = np.array([[1,2,3], [3,1,1]])

def coVariance(X):  # 数据的每一行是一个样本,每一列是一个特征  

        ro, cl = X.shape   

        row_mean = np.mean(X, axis=0)    #求取平均值   

        print(row_mean)

#X_Mean = np.zeros_like(X)

#print(X_Mean)#输出一个和x一致的矩阵

        X_Minus = X - row_mean  #原矩阵减平均值  

        print(X_Minus)   

        covarMatrix = np.zeros((cl, cl))  #建立一个cl*cl的矩阵 

        for i in range(cl):       

                for j in range(cl):            

                covarMatrix[i, j] = (X_Minus[:, i].T.dot(X_Minus[:, j])) / (ro - 1)  

         return covarMatrix

cV = coVariance(y)

print(cV)

16 运行结果及分析

手动推演具体过程如图1.2所示:

 图1.2 手动推演具体过程

分析

        手动推演和上机现实的过程结果完全相同,上机现实前期准备工作相对复杂一些,但是准确性比手动推演高,手动推演容易出现错误,但是两者都可以快速的修改错误之处。理解协方差矩阵的关键就在于牢记它的计算是不同维度之间的协方差,而不是不同样本之间。拿到一个样本矩阵,最先要明确的就是一行是一个样本还是一个维度,心中明确整个计算过程就会顺流而下,就会比较清楚。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小蜗牛,大大梦想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值