• 【算法 】两组随机变量协方差矩阵 矩阵的特征值与特征向量


    算法程序下载:

    地址

    摘要

      对于两个矩阵x=(5,10),y=(10,10)的矩阵计算。众所周知协方差矩阵在相关性计算中起到重要的而作用。本文通过python 计算两个矩阵的协方差矩阵,并且进行分析。

    1 项目介绍

      
    协方差矩阵是一种用于描述两个随机变量之间相关性的矩阵。它是一个对称矩阵,其中每个元素都表示两个随机变量在该维度上的协方差。协方差矩阵的大小与随机变量的数量相关,对于一个二维随机变量,协方差矩阵的大小为2x2。

    协方差矩阵的计算公式如下:

    C = [cov(X,Y)] = E[(X-E(X))(Y-E(Y))]

    其中,cov(X,Y)表示X和Y之间的协方差,E(X)和E(Y)分别表示X和Y的期望值,[(X-E(X))(Y-E(Y))]表示X和Y之间的协方差向量。

    协方差矩阵的应用非常广泛,例如在股票市场中,我们可以通过计算不同股票之间的协方差矩阵来判断它们之间的相关性,从而选择更具有投资价值的股票。在机器学习中,协方差矩阵也被广泛用于特征提取和数据降维等领域。

    2 关于协方差矩阵维度

      协方差矩阵的维度取决于您正在研究的变量的数量。如果您正在研究两个变量,则协方差矩阵的维度为2x2。如果您正在研究三个变量,则协方差矩阵的维度为3x3,以此类推。在计算协方差矩阵时,您需要提供每个变量的观测值。因此,协方差矩阵的维度将取决于您提供的观测值的数量和变量的数量。如果您提供了多个观测值,则协方差矩阵的维度将增加,因为它将包含每个变量的方差和每个变量之间的协方差。,

    2.1CCA算法

      典型相关分析(CCA)算法是一种多元统计分析方法,使用到了协方差矩阵的运算

    2.2矩阵的特征计算

      numpy具有计算特征值与特征向量的功能

    3数据获取

     随机产生两个维度固定的矩阵进行计算。

    4结果

    4.1代码

    import numpy as np
    
    #1.计算协方差矩阵两个矩阵的协方差
    #2.输出协方差矩阵的特征值和特征向量
    #3.输出协方差矩阵输入的维度和输出的维度
    class calmatrix:
        def __init__(self, x, y):
            self.x = x
            self.y = y
            self.cov = np.cov(x, y)
            self.eigvalue, self.eigvector = np.linalg.eig(self.cov)
            self.input_dimx = x.shape
    
            self.input_dimy = y.shape
            self.convshape = self.cov.shape
    
        def get_cov(self):
            return self.cov
    
        def get_eigvalue(self):
            return self.eigvalue
    
        def get_eigvector(self):
            return self.eigvector
    
        def get_input_dim(self):
    
    
            return self.input_dimx,self.input_dimy
    
        def get_output_dim(self):
            return self.convshape
    # 测试calmatrix类新建两个随机矩阵,大小为
    # 100*10100*5,计算协方差矩阵,输出特征值和特征向量
    if __name__ == '__main__':
        x = np.random.random((5, 10))
        y = np.random.random((10,10))
        cal = calmatrix(x, y)
        print(cal.get_cov())
        print(cal.get_eigvalue())
        print(cal.get_eigvector())
        print(cal.get_input_dim())
        print(cal.get_output_dim())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    5结论

      

    [ 3.37782740e-01+0.00000000e+00j  2.86632503e-01+0.00000000e+00j
      1.94376284e-01+0.00000000e+00j  1.74232077e-01+0.00000000e+00j
      1.20085726e-01+0.00000000e+00j  7.85530052e-02+0.00000000e+00j
      5.48480029e-02+0.00000000e+00j  2.82915695e-02+0.00000000e+00j
      1.06494535e-02+0.00000000e+00j -2.12004664e-17+5.27260708e-18j
     -2.12004664e-17-5.27260708e-18j -8.99538618e-18+1.43967442e-17j
     -8.99538618e-18-1.43967442e-17j  1.66067526e-17+0.00000000e+00j
      7.10734713e-18+0.00000000e+00j]
    ((5, 10), (10, 10))
    (15, 15)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

      输入矩阵是,5变量,10个样本与10变量10样本之间的协方差矩阵,结果计算出来是一个15,15的矩阵。我们可以将其分块。那么协方差矩阵就是:cov11,cov12,cov21,cov22.的计算结果拼接。实际对角线上是自相关矩阵,其特征值为1。所以得到的两个变量之间的矩阵是cov12.
    即矩阵中ouput[0:5,5:15]的位置矩阵表示,x变量和y变量之间的协方差。

  • 相关阅读:
    topK问题---使用优先级队列解决
    第十四章大数据和数据科学
    从阿里、头条面试回来,面试官最喜欢问的 Jvm 和 Redis 你了解多少?
    【保姆级·创建对象】如何通过Supplier创建对象
    (总目录)springboot - 实现zip文件上传并对zip文件解压, 包含上传oss
    第四代智能井盖传感器:智能井盖位移怎么进行监测
    浙大版《数据结构学习与实验指导(第2版)》笛卡尔树
    什么OKR,分明是中华田园KPI
    2024年火爆全网的三款ai智能直播系统,你知道哪一种?
    小程序的富文本
  • 原文地址:https://blog.csdn.net/qq_43158059/article/details/133739120