如何在python中生成二元高斯pdf?
我正在尝试实现一个用于绘制二元高斯pdf轮廓的代码。当我明确说明向量/协方差/向量积时,即考虑协方差的所有元素、平均值和数据作为标量,只需使用numpy.meshgrid并调用plt.contour中的函数即可。但当我尝试将其推广并将向量(2-D数组)和实际矩阵(2x2数组)实现到函数中时,它根本不起作用如何在python中生成二元高斯pdf?,python,bayesian,probability-distribution,Python,Bayesian,Probability Distribution,我正在尝试实现一个用于绘制二元高斯pdf轮廓的代码。当我明确说明向量/协方差/向量积时,即考虑协方差的所有元素、平均值和数据作为标量,只需使用numpy.meshgrid并调用plt.contour中的函数即可。但当我尝试将其推广并将向量(2-D数组)和实际矩阵(2x2数组)实现到函数中时,它根本不起作用 x = np.linspace(0,8,50) y = np.linspace(-1,5,50) mu = np.zeros(2) mu[0], mu[1] = 4., 2. t=
x = np.linspace(0,8,50)
y = np.linspace(-1,5,50)
mu = np.zeros(2)
mu[0], mu[1] = 4., 2.
t=(2,2)
s=np.zeros(t)
s[0][0]=1.44
s[0][1], s[1][0] = -0.702, -0.702
s[1][1]=0.81
def bivariate(x,mu,s):
y=x-mu
dets = np.linalg.det(s) #determinant of s
n = 2 #dimension
Exp=np.exp(-(1/2)*(np.dot(y,np.dot(s,y))))
norm = (1./(((2*np.pi)**(n/2)))*np.sqrt(dets))
z=(norm*Exp)
return z
def contour(x,y):
X, Y = np.meshgrid(x,y)
v=np.stack((X,Y),axis=-1)
Z=bivariate(v,mu,s)
plt.contour(X,Y,Z)
plt.plot(4,2, color='green')
plt.show()
我使用numpy.stack()将变量x,y转换为向量,并将其输入为二元变量。它告诉我形状(2,2)和(50,50,2)没有对齐,这很明显,因为s=2x2矩阵和y由初始x-y网格给出。我怎样才能使事情顺利进行?即使我以指数形式明确计算乘积,它也应该是50x50矩阵中的x和y网格