牛客题解 | 计算协方差矩阵

题目

题目链接

协方差矩阵是一种描述两个随机变量之间关系的矩阵,其计算公式为:

c o v ( X , Y ) = 1 n − 1 × ∑ i = 1 n ( x i − μ x ) ( y i − μ y ) cov(X, Y) = \frac{1}{n-1} \times \sum_{i=1}^{n} (x_i - \mu_x)(y_i - \mu_y) cov(X,Y)=n11×i=1n(xiμx)(yiμy)
其中, X X X Y Y Y 是两个随机变量, μ x \mu_x μx μ y \mu_y μy X X X Y Y Y 的均值。

标准代码如下

def calculate_covariance_matrix(vectors):
    n_features = len(vectors)
    n_observations = len(vectors[0])
    covariance_matrix = [[0 for _ in range(n_features)] for _ in range(n_features)]

    means = [sum(feature) / n_observations for feature in vectors]

    for i in range(n_features):
        for j in range(i, n_features):
            covariance = sum((vectors[i][k] - means[i]) * (vectors[j][k] - means[j]) for k in range(n_observations)) / (n_observations - 1)
            covariance_matrix[i][j] = covariance_matrix[j][i] = covariance

    return covariance_matrix

也可以使用numpy库的cov方法,不过精度上会有所不同,需要读者自行调整。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值