Write a Python function to calculate the covariance matrix for a given set of vectors. The function should take a list of lists, where each inner list represents a feature with its observations, and return a covariance matrix as a list of lists. Additionally, provide test cases to verify the correctness of your implementation.

Example:

  • Input:[[1, 2, 3], [4, 5, 6]]
  • Output:[[1.0, 1.0], [1.0, 1.0]]

这个题是计算协方差矩阵,首先协方差是这样子的,如果X和Y同升或同降,协方差就是正的,方向相反则是负的,协方差被用来描述两个随机变量之间线性相关程度。

一个矩阵有n个columns,每一个column就是一个向量,每一个column都跟所有的columns一个个算一下协方差,就可以形成一个nxn的协方差矩阵,如下图所示:

于是这道题就是写一个函数计算协方差,再写一个函数,对着一个矩阵进行迭代,结果又存为一个矩阵,就解决了。

def calculate_covariance(X:list[float], Y:list[float]) -> float:  
    m = len(X)  
    mux = sum(X) / m  
    muy = sum(Y) / m  
    covariance = sum([(x-mux) * (y-muy) for x, y in zip(X, Y)]) / (m-1)  
    return covariance  
  
def calculate_covariance_matrix(vectors: list[list[float]]) -> list[list[float]]:  
 res = []  
for i in range(len(vectors)):  
  row = []  
for j in range(len(vectors)):  
   row.append(calculate_covariance(vectors[i], vectors[j]))  
  res.append(row)  
return res