如何加快稀疏矩阵间方差的计算

2024-04-20 02:29:48 发布

您现在位置:Python中文网/ 问答频道 /正文

谢谢你的帮助。让我更清楚地解释我的问题。你知道吗

我有几个形状相同的库姆。每个矩阵的索引表示一个日记对。每个元素表示日志对的频率。例如, 对于所有矩阵,[1,2]给出了轴颈对1-2的频率;[2,1]给出了轴颈对2-1的频率。你知道吗

我的目标是得到每个日志对的频率方差。你知道吗


Tags: 元素目标矩阵频率日记形状方差轴颈
2条回答

如果我理解正确(如果我错了请纠正我),您希望计算稀疏矩阵列表的元素方差,所有这些矩阵都具有相同的形状。例如,可以有100个稀疏矩阵,每个矩阵的大小为200 x 300,如下所示。你知道吗

from scipy import sparse
matrices = [sparse.random(200, 300) for i in range(100)]

您可以通过将这些矩阵相加并除以列表中矩阵的数目来计算这些矩阵的元素平均值。你知道吗

def get_elmwise_mean(matrices):
    return sum(matrices) / len(matrices)

根据元素平均值,可以使用以下公式之一计算元素方差:

  1. Var(X) = E[X^2] - E[X]^2

  2. Var(X) = E[(X - E[x])^2]

使用公式1。

squared_matrices = list(map(lambda mat: mat.power(2), matrices))
elmwise_var = get_elmwise_mean(squared_matrices) - get_elmwise_mean(matrices).power(2)

使用公式2。

elmwise_mean = get_elmwise_mean(matrices)
squared_matrices = list(map(lambda mat: (mat - elmwise_mean).power(2), matrices))
elmwise_var = get_elmwise_mean(squared_matrices)

我只是意识到我应该使用x.power(2)而不是np.功率(2) 来解决这个问题。This is my code

相关问题 更多 >