Hướng dẫn gaussian python - trăn gaussian

Tôi nghĩ rằng điều này thực sự không thân thiện lắm. Tôi sẽ viết ở đây mã và giải thích lý do tại sao nó hoạt động.

Phương trình của Gaussian đa biến như sau:

Hướng dẫn gaussian python - trăn gaussian

Trong trường hợp 2D,

là các vectơ cột 2D,

là ma trận hiệp phương sai 2x2 và n = 2.n=2.

Vì vậy, trong trường hợp 2D, vector

thực sự là một điểm (x, y), mà chúng tôi muốn tính toán giá trị chức năng, với vectơ trung bình 2D(x,y), for which we want to compute function value, given the 2D mean vector

, mà chúng ta cũng có thể viết là (MX, My) và Ma trận hiệp phương sai(mX, mY), and the covariance matrix

.

Để làm cho nó thân thiện hơn để thực hiện, hãy tính toán kết quả của

:

Vì thế

là vectơ cột (x - mx, y - my). Do đó, kết quả của điện toáncolumn vector (x - mX, y - mY). Therefore, the result of computing

là vectơ hàng 2D:

. của tôi)), trong đó CI là nghịch đảo của ma trận hiệp phương sai, được hiển thị trong phương trình là, where CI is the inverse of the covariance matrix, shown in the equation as

, đó là ma trận 2x2, như

Là.

Sau đó, kết quả hiện tại, là vectơ hàng 2D, được nhân (sản phẩm bên trong) bởi vectơ cột

, cuối cùng cung cấp cho chúng ta vô hướng:scalar:

Ci [0,0] (x - mx)^2 + (ci [1,0] + ci [0,1]) (y - my) (x - mx) + ci [1,1] (y - my )^2

Điều này sẽ dễ dàng hơn để thực hiện biểu thức này bằng cách sử dụng Numpy, so với

, mặc dù chúng có cùng giá trị .________ 0

Kết quả:

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

Nhập khẩu numpy as np
ImportPDB pdb
FromMatplotLibImportPyplotasplt matplotlib import pyplot as plt
fromscipy.statsimportmultivariate_normal scipy.stats import multivariate_normal
defgauss2d (mu, sigma, to_plot = false): gauss2d(mu, sigma, to_plot=False):
W, h = 100, 100, h = 100, 100
std = [np.sqrt (sigma [0, 0]), np.sqrt (sigma [1, 1])]]]]]]]]]]]]]] = [np.sqrt(sigma[0, 0]), np.sqrt(sigma[1, 1])]
x = np.linspace (mu [0] -3*std [0], mu [0] +3*std [0], w) = np.linspace(mu[0] - 3 * std[0], mu[0] + 3 * std[0], w)
y = np.linspace (mu [1] -3*std [1], mu [1] +3*std [1], h) = np.linspace(mu[1] - 3 * std[1], mu[1] + 3 * std[1], h)
x, y = np.meshgrid (x, y), y = np.meshgrid(x, y)
x_ = x.flatten () = x.flatten()
y_ = y.flatten () = y.flatten()
xy = np.vstack ((x_, y _)). T = np.vstack((x_, y_)).T
Normal_rv = multivariate_natoral (MU, Sigma) = multivariate_normal(mu, sigma)
z = naluc_rv.pdf (xy) = normal_rv.pdf(xy)
Z = Z.Reshape (W, H, Order = 'F') = z.reshape(w, h, order='F')
IFTO_PLOT: to_plot:
plt.contourf (x, y, z.t).contourf(x, y, z.T)
plt.show ().show()
trở lại z
Mu = [50, 70] = [50, 70]
Sigma = [75.0, 90.0] = [75.0, 90.0]
Z = Gauss2d (Mu, Sigma, True) = gauss2d(MU, SIGMA, True)