以下のような式で多変量正規分布の計算をしています
また,例として,1500次元の変数,平均,分散を与えます
python
1import numpy as np 2x = np.random.rand(1500) 3mean = np.random.rand(1500) 4cov = np.random.rand(1500,1500) 5 6def gaussian(x,mean,cov): 7 A = 1. / ((2. * np.pi) ** (x.size/2.0)) 8 B = 1. / (np.linalg.det(cov) ** 0.5) 9 C = -0.5 * np.dot(np.dot(x - mean, np.linalg.inv(cov)), x - mean) 10 return A * B * np.exp(C) 11 12gaussian(x,mean,cov)
このときにxの数が大きすぎて,Aの計算の段階で,オーバーフローしてしまいます
また,Bの計算ではnp.linalg.det(cov)が-infとなってしまいます
このような場合,応急措置として,それっぽい値を代入しているのですが
適切な方法があれば教えていただけるとありがたいです
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/19 07:09