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
