1

指定された平均と共分散行列を使用して、Numpy と Matplotlib で二変量ガウス密度関数をプロットする方法は? それは表面または等高線図である可能性があります。個々のシグマを含まない平均ベクトルと共分散行列を使用した一般的なソリューションが必要です。

mean, cov, n_samples = np.array([0.,0.]), np.array([[1.0,0.5],[0.5,1.0]]), 100

ありがとう、

@麻生アジャイル

4

1 に答える 1

1

これが私の試みです:

import umpy as np
import matplotlib.pyplot as plt 
mean, cov, n_samples = np.array([0.,0.]), np.array([[1.0,0.5],[0.5,1.0]]), 100
data=np.random.multivariate_normal(mean,cov,size=n_samples)
pdf = np.zeros(data.shape[0])
cons = 1./((2*np.pi)**(data.shape[1]/2.)*np.linalg.det(cov)**(-0.5))
X, Y = np.meshgrid(data.T[0], data.T[1])
def pdf(point):
  return cons*np.exp(-np.dot(np.dot((point-mean),np.linalg.inv(cov)),(point-mean).T)/2.)
zs = np.array([pdf(np.array(ponit)) for ponit in zip(np.ravel(X), np.ravel(Y))])
Z = zs.reshape(X.shape)
fig = plt.figure()
ax3D = fig.add_subplot(111, projection='3d')
surf = ax3D.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,linewidth=0, antialiased=Fals)
surf.show()

3D表面プロットは結果を示していますが、それは少し奇妙です!。コメントやその他の解決策をいただければ幸いです。

私が期待している(そして望んでいる)のは、次のようなものです。ここに画像の説明を入力してください

于 2012-12-07T17:59:49.437 に答える