协方差矩阵 矩阵的特征值与特征向量
算法程序下载:
摘要
对于两个矩阵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*10和100*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())
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)
输入矩阵是,5变量,10个样本与10变量10样本之间的协方差矩阵,结果计算出来是一个15,15的矩阵。我们可以将其分块。那么协方差矩阵就是:cov11,cov12,cov21,cov22.的计算结果拼接。实际对角线上是自相关矩阵,其特征值为1。所以得到的两个变量之间的矩阵是cov12.
即矩阵中ouput[0:5,5:15]的位置矩阵表示,x变量和y变量之间的协方差。