2次元ガウス関数の出力がなぜ3つの数字で表されているのか?
出力結果に3つ数字が出てくることはコードを見て理解できます。
疑問なのは、ガウス関数の出力はスカラーだから、1つの数字だけが出力されるはずだろうということです。
### ソースコード
python
1import numpy as np 2import matplotlib.pyplot as plt 3from mpl_toolkits.mplot3d import axes3d 4%matplotlib inline 5 6# ガウス関数 ----------------------------- 7def gauss(x, mu, sigma): 8 N, D = x.shape 9 c1 = 1 / (2 * np.pi)**(D / 2) 10 c2 = 1 / (np.linalg.det(sigma)**(1 / 2)) 11 inv_sigma = np.linalg.inv(sigma) 12 c3 = x - mu 13 c4 = np.dot(c3, inv_sigma) 14 c5 = np.zeros(N) 15 for d in range(D): 16 c5 = c5 + c4[:, d] * c3[:, d] 17 p = c1 * c2 * np.exp(-c5 / 2) 18 return p 19 20# 適当な数値を代入してテスト 21x = np.array([[1, 2], [2, 1], [3, 4]]) 22mu = np.array([1, 2]) 23sigma = np.array([[1, 0], [0, 1]]) 24print(gauss(x, mu, sigma))
出力結果
[0.15915494 0.05854983 0.00291502]
###出典
Pythonで動かして学ぶ!あたらしい機械学習の教科書 伊藤 真 著
Page142
回答1件
あなたの回答
tips
プレビュー