Calculate the covariance matrix for a given dataset where each column represents a feature and each row is an observation.
def calculate_covariance_matrix(vectors: list[list[float]]) -> list[list[float]]:
n = len(vectors)
num_features = len(vectors[0])
# Calculate means for each feature
means = [sum(vectors[r][c] for r in range(n)) / n for c in range(num_features)]
# Calculate covariance matrix
cov = []
for i in range(num_features):
row = []
for j in range(num_features):
covariance = sum(
(vectors[r][i] - means[i]) * (vectors[r][j] - means[j])
for r in range(n)
) / (n - 1)
row.append(covariance)
cov.append(row)
return cov