私は頻繁に平均と共分散行列を更新する必要があるPythonスクリプトを持っています。Pythonの平均と共分散の高速増分更新
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)
問題は、それは私のために十分な速さではないです。私は現在やっていることは、次のように私は新しいデータポイントの$ Xの$(ベクトル)を取得するたびに、私は平均と共分散を再計算することです。いずれにしても、に基づいて再計算せずに、mean
とcov
を徐々に更新すると効率的ですか?
コンピューティングの平均を段階的に簡単にする必要があります。私の主な問題は、共分散行列self.cov
を更新する方法です。平均計算の
読む[このWikipediaの記事] (https://en.wikipedia.org/wiki/Algorithms_for_calculating_variance)、分散と共分散の両方についてオンラインアルゴリズムを使用します。数値的に不安定である可能性があるので、四角形の合計を追跡するために、以下の提案から離れてください。 – Jaime