Đường viền gaussian 2d trong python

Phân phối chuẩn đa biến được định nghĩa trong scipy.stats là. V=Nd[mean=m, cov=Sigma], trong đó $m=[m[0,], m[1], \ldots m[d-1]]^T$ là vectơ của phương tiện và $\

Đối với các đối tượng trong ảnh được mô hình hóa bằng Gaussian 2D, chúng ta thường muốn các thuộc tính như tâm của đốm màu, chiều rộng và góc. Đối với hình elip thiên văn, chiều rộng không phải là giá trị cho $\sigma$ theo x và y, mà là Toàn bộ chiều rộng ở mức tối đa một nửa [FWHM] Trong tài liệu khoảnh khắc, chúng được gọi là $HW$. Góc của hình elip được đo ngược chiều kim đồng hồ đối với trục +x. Hình elip thiên văn xác định một góc vị trí là góc giữa trục chính của hình elip và trục +y

Chúng tôi rút ra các giá trị áp dụng cho các thuộc tính toán học của hình elip vì chúng quen thuộc và cũng có thể dễ dàng chuyển đổi thành các thuộc tính cho hình elip trong định nghĩa thiên văn

Theo tài liệu khoảnh khắc

\begin{equation}M_0=\sum_j \sum_i I_{j,i}\end{equation}\begin{eqnarray*} \bar{x}&=&\frac1{M_0}\sum_j \sum_i x_i I_{j,


Và trong khoảnh khắc thứ hai, chúng tôi sử dụng các biểu thức. \begin{eqnarray*} M_{xx}&=&\frac1{M_0}\sum_j\sum_ix_i^2I_{j,i}-\bar{x}^2\\ M_{yy}&=&\frac1{M_0 . \end{eqnarray*}

Các hằng số $a$, $b$ và $c$ được tính sau đó với. \begin{equation} a=\frac{M_{yy}}{2[M_{xx}M_{yy}-M_{xy}^2]}\quad b=\frac{M_{xx}}{2[

Điều kiện để $a$, $b$ và $c$ biểu thị hình elip là $\boxed{ab-c^2 > 0}$ và $a>0$ và $b>0$

Ước tính biên độ A Tổng của tất cả các giá trị pixel, cần thiết để chia tỷ lệ thời điểm thứ nhất và thứ hai và để ước tính biên độ của Gaussian

\begin{equation} \boxed{A = M_0 \sqrt{ab - c^2}} \end{equation}

Lưu ý rằng ước tính này phải được nhân với diện tích $dx. dy$ của một phần tử lưới dành cho $[N_x, N_y]$ pixel và giới hạn lưới $x_{min}, y_{min}$ và $x_{max}, y_{max}$ bằng

\begin{equation} dx dy = [x_{max}-x_{min}]/N_x. [y_{max}-y_{min}]/N_y \end{equation}

Ước tính tọa độ tâm $[x_0, y_0]$. Các tọa độ lưới của vị trí của đỉnh được cho bởi

\begin{eqnarray*} \bar{x}&=&\frac1{M_0}\sum_j \sum_i x_i I_{j,i}\\ \bar{y}&=&\frac1{M_0}\sum_j \sum_i y_j

Ước tính góc quay $\theta$. Góc xoay xác định góc giữa góc chính của hình elip và trục +x, được đo ngược chiều kim đồng hồ

\begin{equation} \boxed{\tan 2\theta = \frac{2c}{a-b}} \end{equation}

Ước tính trục chính và trục phụ Với $p = \sqrt{[a-b]^2 + 4c^2}$ [và yêu cầu $p>0$], ước tính cho trục chính và phụ là

Phân phối Gaussian [hoặc phân phối chuẩn] là một trong những phân phối xác suất cơ bản nhất trong tự nhiên. Từ sự xuất hiện của nó trong cuộc sống hàng ngày đến các ứng dụng của nó trong các kỹ thuật học tập thống kê, đây là một trong những khám phá toán học sâu sắc nhất từng được thực hiện. Bài viết này sẽ hướng tới phân phối nhiều chiều và hiểu trực quan về phân phối chuẩn hai biến

Lợi ích của việc che phủ phân phối hai biến là chúng ta có thể nhìn và hiểu bằng cách sử dụng các biểu đồ hình học thích hợp. Hơn nữa, các khái niệm tương tự đã học được thông qua phân phối hai chiều có thể được mở rộng cho bất kỳ số thứ nguyên nào. Trước tiên, chúng ta sẽ trình bày ngắn gọn các khía cạnh lý thuyết của phân phối và thực hiện phân tích toàn diện về các khía cạnh khác nhau của nó, như ma trận hiệp phương sai và hàm mật độ trong Python

Hàm mật độ xác suất [hoặc hàm mật độ hoặc PDF] của phân phối Gaussian Bivariate

Hàm mật độ mô tả khả năng xảy ra tương đối của một biến ngẫu nhiên 

 tại một mẫu nhất định. Nếu giá trị xung quanh một mẫu nhất định cao, điều đó có nghĩa là biến ngẫu nhiên rất có thể sẽ nhận giá trị đó khi được lấy mẫu ngẫu nhiên. Chịu trách nhiệm về "hình chuông" đặc trưng của nó, hàm mật độ của một biến ngẫu nhiên Gauss hai biến nhất định 
 được định nghĩa bằng toán học là.

Ở đâu

là bất kỳ vectơ đầu vào nào 
trong khi các ký hiệu 
 và 
.

Chức năng chính được sử dụng trong bài viết này là scipy. số liệu thống kê. hàm multivariate_normal từ tiện ích scipy cho a biến ngẫu nhiên thông thường nhiều biến .

cú pháp. scipy. số liệu thống kê. multivariate_normal[mean=None, cov=1]

Thông số không tùy chọn

  • bần tiện. Một mảng Numpy chỉ định giá trị trung bình của phân phối
  • cov. Một mảng Numpy xác định một ma trận hiệp phương sai xác định dương
  • hạt giống. Một hạt giống ngẫu nhiên để tạo ra các kết quả có thể lặp lại

trả lại. Một đối tượng biến ngẫu nhiên bình thường đa biến scipy. số liệu thống kê. _đa biến. đối tượng multivariate_normal_gen. Một số phương thức của đối tượng được trả về hữu ích cho bài viết này như sau

  • pdf[x]. Trả về giá trị hàm mật độ tại giá trị 'x'
  • rvs[kích thước]. Vẽ số lượng mẫu 'kích thước' từ phân phối Gaussian đa biến được tạo

Một cái nhìn “trực quan” về ma trận hiệp phương sai

Ma trận hiệp phương sai có lẽ là một trong những thành phần linh hoạt nhất của phân phối Gaussian hai biến. Mỗi phần tử của ma trận hiệp phương sai xác định hiệp phương sai giữa mỗi cặp biến ngẫu nhiên tiếp theo. Hiệp phương sai giữa hai biến ngẫu nhiên 

 và 
 được định nghĩa toán học là  
 trong đó 
 biểu thị . Nói một cách trực giác, bằng cách quan sát các phần tử đường chéo của ma trận hiệp phương sai, chúng ta có thể dễ dàng hình dung đường viền được vẽ bởi hai biến ngẫu nhiên Gaussian trong 2D. Đây là cách.
. Intuitively speaking, by observing the diagonal elements of the covariance matrix we can easily imagine the contour drawn out by the two Gaussian random variables in 2D. Here’s how:

Các giá trị ở đường chéo bên phải thể hiện hiệp phương sai chung giữa hai thành phần của các biến ngẫu nhiên tương ứng. Nếu giá trị là +ve, điều đó có nghĩa là có hiệp phương sai dương giữa hai biến ngẫu nhiên, nghĩa là nếu chúng ta đi theo hướng mà 

 tăng thì 
 sẽ tăng . Tương tự, nếu giá trị này là âm, điều đó có nghĩa là 
 sẽ giảm theo hướng tăng 
.

Dưới đây là việc thực hiện ma trận hiệp phương sai

Trong các đoạn mã sau, chúng tôi sẽ tạo 3 phân phối Gaussian bivariate khác nhau với cùng một giá trị trung bình

nhưng ma trận hiệp phương sai khác nhau.

  1. Ma trận hiệp phương sai với -ve hiệp phương sai =
  2. Ma trận hiệp phương sai với 0 hiệp phương sai =
  3. Ma trận hiệp phương sai với +ve hiệp phương sai =

con trăn




# Importing the necessary modules

import numpy as np

import matplotlib.pyplot as plt

from scipy.statsimport multivariate_normal

 

 

# Importing the necessary modules0____20____21

import2______23import4import5import6import7import8

 

import9

numpy as np0import5numpy as np2

 

numpy as np3

numpy as np4

numpy as np5import5 numpy as np7_______38numpy as np9import7import1import7numpy as np9import4

 

import5

import6

import7_______25 import9____21import7import1matplotlib.pyplot as plt3

 

matplotlib.pyplot as plt4

matplotlib.pyplot as plt5

matplotlib.pyplot as plt6 matplotlib.pyplot as plt7____58 matplotlib.pyplot as plt9from0

from1from2from3import7from5from6from7from3import1

from1

from1scipy.stats2

from1scipy.stats4import5 scipy.stats6from3scipy.stats8from3import0

from1

from1import3

from1import5

from1import7import5 import9import5 multivariate_normal1import5 multivariate_normal3

multivariate_normal4multivariate_normal5import5 multivariate_normal7

from1

from1# Importing the necessary modules00

from1# Importing the necessary modules02

________ 61# Importing the necessary modules04import5 ________ 106import5 _______ 108import1

from1

from1import02

from1import04import1import06from3import08import09import10import5import12import7

import14import15import5 import17import7

import14import20import5 import22import1

from1import25import26import1

from1import29____230import1

from1import33import34import1

from1import37import38import1

from1

import41

đầu ra

Các mẫu được tạo cho các ma trận hiệp phương sai khác nhau

Chúng tôi có thể thấy rằng đầu ra của mã đã đáp ứng thành công các bằng chứng lý thuyết của chúng tôi. Lưu ý rằng giá trị 0. 8 được thực hiện chỉ vì mục đích thuận tiện. Người đọc có thể thử nghiệm với các cường độ hiệp phương sai khác nhau và mong đợi kết quả nhất quán

Chế độ xem 3D của hàm mật độ xác suất

Bây giờ chúng ta có thể chuyển sang một trong những khía cạnh đặc trưng và thú vị nhất của phân bố Gaussian hai biến, hàm mật độ. Hàm mật độ chịu trách nhiệm cho hình dạng chuông đặc trưng của phân phối

con trăn




# Importing the necessary modules

import numpy as np

import matplotlib.pyplot as plt

from scipy.statsimport multivariate_normal

 

 

# Importing the necessary modules0____20____21

import2______23import4import5import6import7import8

import61import5 import63

 

import9

numpy as np0import5numpy as np2

 

numpy as np3

numpy as np4

numpy as np5import5 numpy as np7_______38numpy as np9import7import1import7numpy as np9import4

 

import80

import81

import7_______25 import9____21import7import1matplotlib.pyplot as plt3

 

import89

import90

import91import5 import93

 

import94

matplotlib.pyplot as plt6 matplotlib.pyplot as plt7____58 matplotlib.pyplot as plt9from0

from1

from1scipy.stats2

from1scipy.stats4import5 scipy.stats6from3scipy.stats8from3import0

from1

from1import3

from1import5

from1import7import5 import9import5 multivariate_normal1import5 multivariate_normal3

multivariate_normal4multivariate_normal5import5 multivariate_normal7

from1

from1numpy as np30

from1numpy as np32

from1numpy as np34import5 numpy as np36import1numpy as np38from3import4

from1numpy as np42import5 numpy as np44import1import7import1numpy as np48from3import7from3import4

from1

from1numpy as np55import5 numpy as np57numpy as np8from5numpy as np60numpy as np61from5numpy as np60numpy as np64import5numpy as np66import1

from1numpy as np69import5 numpy as np57numpy as np8from5numpy as np60numpy as np75from5numpy as np60numpy as np78import5numpy as np66import1

from1____383____25 numpy as np85

from1

from1numpy as np88

from1numpy as np90

from1____392____25 numpy as np94

from1matplotlib.pyplot as plt6 numpy as np97_______58 numpy as np99import00import1import02

import03matplotlib.pyplot as plt6 import05matplotlib.pyplot as plt8 numpy as np99import00from3import02

import11import12import5 import14

from1

from1import17

from1import19import5 import21from7import23

from1import25 import5 ________ 227import5 ________ 229import1

from1import32import5 import34import1

from1import29____238import1

from1import33import42import1

from1import25import26import1

from1import49

from1import51

 

import52

import41

 

import54

matplotlib.pyplot as plt6 matplotlib.pyplot as plt7____58 matplotlib.pyplot as plt9import59

from1from2from3import7from5from6from7from3import1

from1import70____25import34import1

from1import29____238import1

from1import33import42import1

from1import25import84import1

import52

import41

đầu ra

1] Đồ thị của hàm mật độ

Các hàm mật độ tương ứng với các ma trận hiệp phương sai khác nhau

2] Vẽ đường nét

Đường viền của các hàm mật độ

Như chúng ta có thể thấy, các đường viền của hàm mật độ hoàn toàn khớp với các mẫu mà chúng ta đã vẽ trong phần trước. Lưu ý rằng ranh giới 3 sigma [kết thúc từ 68-95-99. 7] đảm bảo phạm vi bao phủ mẫu tối đa cho phân phối đã xác định. Như đã đề cập trước đó, người đọc có thể chơi xung quanh với các ranh giới khác nhau và mong đợi kết quả nhất quán

Phần kết luận

Chúng tôi đã hiểu những điểm phức tạp khác nhau đằng sau phân phối hai biến Gaussian thông qua một loạt các sơ đồ và xác minh kết quả lý thuyết với những phát hiện thực tế bằng Python. Người đọc được khuyến khích chơi xung quanh với các đoạn mã để có được trực giác sâu sắc hơn nhiều về phân phối kỳ diệu này

Chủ Đề