Published on

Python で相関係数を計算する

Authors

こないだ Python で 2 つのベクトル間の相関係数を求めなくちゃいけないことがありました.相関を使ってマッチングする点をサーチする感じのプログラムでした.

numpy の corrcoef を使えば相関行列が求められるので,通常はそれで OK なのですが,どうもやっているとメモリエラーが発生して計算が続行できない状態に...

numpy の corrcoef はメモリリークしている?っぽかったので結局自分で書くことにしました.

def corrcoef(x, y):
    mx = x - numpy.mean(x)
    my = y - numpy.mean(y)
    return numpy.dot(mx, my) / (numpy.sqrt(numpy.dot(mx, mx) * numpy.dot(my, my)))

上記の結果がnumpy.corrcoef(x, y)[0, 1]と等しくなります.