Trăn phân phối gaussian 2d

Aly Shmahell

Theo

25 Tháng tám, 2019

·

4 phút đọc

Tiết kiệm

Hướng dẫn về cách tạo và vẽ bản phân phối Gaussian 3D với [Python/Numpy/Tensorflow/Pytorch] & [Matplotlib/Plotly]

Báo cáo vấn đề

Bất cứ khi nào đề cập đến việc vẽ sơ đồ Phân phối Gaussian, nó thường liên quan đến Chuẩn đơn biến và về cơ bản đó là phương pháp Phân phối Gaussian 2D lấy mẫu từ một mảng phạm vi trên trục X, sau đó áp dụng hàm Gaussian cho nó và tạo ra Y

Tuy nhiên, trong trường hợp Phân phối Gaussian 3D, việc lấy mẫu diễn ra trên cả trục X và trục Y và các tọa độ được chiếu trên trục Z. Trường hợp này hiếm khi được đề cập trong hướng dẫn, mặc dù nó rất hữu ích trong nhiều tình huống

phác thảo giải pháp

Để lấy mẫu trên hai trục. X và Y, bạn cần lấy mẫu tất cả Trục Y cho từng mẫu trên trục X

Việc lấy mẫu hoàn chỉnh trên cả hai trục sẽ tạo ra các phạm vi, một trên trục X và một trên trục Y

Khi hoàn tất, bạn cần tạo một miền trên trục Z, điều này có thể được thực hiện bằng cách tính khoảng cách của các mẫu [X, Y]

Sau đó, miền Z có thể được chạy qua hàm Gaussian để tạo ra phạm vi Gaussian trên trục Z

Sau đó, một máy vẽ 3D có thể được xây dựng để sử dụng cả ba phạm vi để tạo ra bề mặt 3D

Phân tích toán học
  • Phạm vi X cần phải là ma trận 2D có kích thước

  • Phạm vi trung gian X là một không gian dòng [mảng phạm vi 1D] từ “-miền” đến “+miền” với kích thước mỗi bước là “phương sai”, số phần tử trong mảng 1D này phải là

  • Phạm vi X là kết quả của việc xếp chồng các bản sao của phạm vi trung gian X, số lượng bản sao phải là

  • Phạm vi Y là chuyển vị của ma trận phạm vi X

  • Miền Z là khoảng cách giữa X và Y

  • Phạm vi Z là kết quả của việc áp dụng hàm Gaussian trên ma trận khoảng cách [miền Z]

Triển khai mã

Trình tạo phân phối Bivariate Normal [Gaussian] được tạo bằng Python thuần túy

  • Phạm vi X được xây dựng mà không có chức năng numpy
  • Phạm vi Y là chuyển vị của ma trận phạm vi X [ndarray]
  • Phạm vi X, phạm vi Y và phạm vi Z kết quả cuối cùng được đóng gói bằng một mảng gọn gàng để tương thích với các máy vẽ

Trình tạo phân phối Bivariate Normal [Gaussian] được tạo bằng Numpy

  • Phạm vi trung gian X được tạo với numpy bằng chức năng "arange"
  • Phạm vi trung gian Y được tạo với numpy bằng cách sử dụng chức năng "arange"
  • Phạm vi X, Y được xây dựng với chức năng “meshgrid” từ numpy

Trình tạo phân phối Bivariate Normal [Gaussian] được tạo bằng Tensorflow

  • Phạm vi trung gian X được xây dựng với tensorflow sử dụng chức năng "phạm vi"
  • Phạm vi trung gian Y được xây dựng với tensorflow sử dụng chức năng "phạm vi"
  • Phạm vi X, Y được xây dựng với chức năng “meshgrid” từ tensorflow

Trình tạo phân phối Bivariate Normal [Gaussian] được tạo bằng PyTorch

  • Phạm vi trung gian X được xây dựng bằng đèn pin sử dụng chức năng “arange”
  • Dải trung gian Y được tạo bằng đèn pin bằng chức năng “arange”
  • Phạm vi X, Y được xây dựng với chức năng “meshgrid” từ torch

Bivariate Normal Plotter với Matplotlib

Bivariate Normal Plotter với Plotly [Phiên bản 4. 0. 0]

Vẽ sơ đồ phân phối chuẩn hai biến do Python tạo ra bằng Matplotlib

plt_plot_bivariate_normal_pdf[*py_bivariate_normal_pdf[6, 4, .25]]

Vẽ sơ đồ phân phối chuẩn hai biến do Numpy tạo bằng Matplotlib

plt_plot_bivariate_normal_pdf[*np_bivariate_normal_pdf[6, 4, .25]]

Vẽ sơ đồ phân phối chuẩn hai biến được tạo bởi Tensorflow với Matplotlib

plt_plot_bivariate_normal_pdf[*tf_bivariate_normal_pdf[6, 4, .25]]

Vẽ sơ đồ phân phối chuẩn hai biến được tạo bởi PyTorch với Matplotlib

plt_plot_bivariate_normal_pdf[*torch_bivariate_normal_pdf[6, 4, .25]]

Vẽ sơ đồ phân phối chuẩn hai biến do Python tạo ra với Plotly

plotly_plot_bivariate_normal_pdf[*py_bivariate_normal_pdf[6, 4, .25]]

Vẽ sơ đồ phân phối chuẩn hai biến do Numpy tạo bằng Plotly

plotly_plot_bivariate_normal_pdf[*np_bivariate_normal_pdf[6, 4, .25]]

Vẽ sơ đồ phân phối chuẩn hai biến được tạo bởi Tensorflow với Plotly

plotly_plot_bivariate_normal_pdf[*tf_bivariate_normal_pdf[6, 4, .25]]

Vẽ sơ đồ phân phối chuẩn hai biến được tạo bởi PyTorch với Plotly

plotly_plot_bivariate_normal_pdf[*torch_bivariate_normal_pdf[6, 4, .25]]

Lưu ý cho người đọc

Xin vui lòng cung cấp phản hồi, lý do đằng sau những hướng dẫn này sau cùng là để trao đổi kiến ​​​​thức và sửa khóa học trong trường hợp sai sót

Chủ Đề