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

2024-03-28 21:13:08 发布

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

我有一个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)

问题是这对我来说不够快。有没有办法通过增量更新mean和{}而不基于所有的data重新计算它们来提高效率吗?在

计算意味着增量应该很容易,我可以解决它。我的主要问题是如何更新协方差矩阵self.cov。在


Tags: of数据self脚本dataisnp矩阵
3条回答

我刚刚发现我们可以很容易地使用mdp库来实现这一点 http://mdp-toolkit.sourceforge.net/api/mdp.utils.CovarianceMatrix-class.html

对于方差(仅协方差矩阵的对角线),它很简单。您还需要保留数据的平方和。回想一下方差的公式是:Var(x)=E[x^2]-(E[x])^2)。所以每一步你都在计算你的常规平均值,和平方和的平均值。在

这可以推广到多元变量的全协方差矩阵。看看here。在

我会通过记录平方和和来完成。在

__init__中:

self.sumx = 0
self.sumx2 = 0

然后在附录中:

^{pr2}$

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

相关问题 更多 >