gpt4 book ai didi

python - Python 中均值和协方差的快速增量更新

转载 作者:行者123 更新时间:2023-11-28 17:27:35 27 4
gpt4 key购买 nike

我有一个 Python 脚本,我需要在其中频繁更新均值和协方差矩阵。我目前正在做的是,每次我得到一个新数据点 $x$(一个向量)时,我都会重新计算均值和协方差,如下所示:

data.append(x) # My `data` is just a list of lists of floats (i.e., x is a list of floats)
self.mean = np.mean( data, axis=0) # self.mean is a list representing the center of data
self.cov = np.cov( data, rowvar=0)

问题是对我来说不够快。是否可以通过增量更新 meancov 而不根据所有 data 重新计算它们来提高效率?

增量计算均值应该很容易,我可以算出来。我的主要问题是如何更新协方差矩阵 self.cov

最佳答案

我会通过跟踪总和和平方和来做到这一点。

__init__中:

self.sumx = 0
self.sumx2 = 0

然后在追加中:

data.append(x)
self.sumx += x
self.sumx2 += x * x[:,np,newaxis]

self.mean = sumx / len(data)
self.cov = (self.sumx2 - self.mean * self.mean[:,np,newaxis]) / len(data)

注意 [:,np.newaxis] 广播以找到每对元素的产物

关于python - Python 中均值和协方差的快速增量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37498612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com