Pythonで多次元正規分布
この記事に書かれていること
numpyによる多次元正規分布の実装
多次元正規分布とは
一般的によく知られている正規分布を多次元に拡張したものです。
正規分布自体の解説はWikipediaにまかせてしまいます
正規分布 - Wikipedia
多次元正規分布の確率密度関数は、入力ベクトルx、平均ベクトルmu、分散共分散行列を∑とすると、以下の式で表されます。
pは入力ベクトルの次元数、Tは転置行列を表しています。
Pythonによる実装
この式をPythonで記述すると以下のようになります。
import numpy as np def mnd(_x, _mu, _sig): x = np.matrix(_x) mu = np.matrix(_mu) sig = np.matrix(_sig) a = np.sqrt(np.linalg.det(sig)*(2*np.pi)**sig.ndim) b = np.linalg.det(-0.5*(x-mu)*sig.I*(x-mu).T) return np.exp(b)/a
数式と同様に、_xに入力ベクトル、_muに平均ベクトル、_sigに共分散行列を渡すことで、確率密度関数の値を返します。