Chức năng gaussian python là gì?

Trong bài đăng này, chúng tôi sẽ trình bày hướng dẫn từng bước về cách điều chỉnh đường cong phân phối Gaussian trên dữ liệu bằng cách sử dụng ngôn ngữ lập trình Python. Hướng dẫn này có thể được mở rộng để phù hợp với các phân phối thống kê khác trên dữ liệu

Wahyudin Syam

Ngày 7 tháng 6 năm 2022 7 phút đọc

Trong bài đăng này, chúng tôi sẽ trình bày hướng dẫn từng bước về cách điều chỉnh đường cong phân phối Gaussian trên dữ liệu bằng cách sử dụng ngôn ngữ lập trình Python. Hướng dẫn này có thể được mở rộng để phù hợp với các phân phối thống kê khác trên dữ liệu

Sự phù hợp của phân phối Gaussian trên dữ liệu rất hữu ích trong các hoạt động nghiên cứu và phát triển trong tất cả các ngành, bao gồm kỹ thuật, khoa học tự nhiên và xã hội cũng như y học

Một giới thiệu ngắn gọn về phân phối Gaussian được đưa ra như một sự làm mới về phân phối Gaussian

Chúng ta hãy đi vào chi tiết hướng dẫn

ĐỌC THÊM. Phân phối thống kê liên tục và rời rạc. Hàm mật độ/khối lượng xác suất, hàm phân bố tích lũy và định lý giới hạn trung tâm

Phân phối Gaussian [Bình thường]. giới thiệu ngắn

Biến ngẫu nhiên được định nghĩa là một biến thực được rút ra hoặc thu được từ một phép thử ngẫu nhiên hoặc phân phối ngẫu nhiên trong đó các giá trị của phép thử nằm trong một tập hợp mẫu cụ thể

Có hai loại biến ngẫu nhiên

  • Biến ngẫu nhiên liên tục
  • Biến ngẫu nhiên rời rạc

Biến ngẫu nhiên liên tục là biến ngẫu nhiên có giá trị trong một khoảng thực hoặc có giới hạn hoặc không có giới hạn

Trong khi đó, biến rời rạc là biến ngẫu nhiên có giá trị nằm trong một khoảng nguyên giới hạn [hữu hạn]. Lưu ý rằng đối với biến rời rạc, giá trị luôn nằm trong giới hạn hữu hạn

Phân phối Gaussian dành cho các biến ngẫu nhiên liên tục. Phân phối này là phân phối thống kê nổi tiếng nhất

Phân phối Gaussian đã được nghiên cứu từ lâu từ thế kỷ 18 và đã được hiểu rõ, ví dụ như các thuộc tính của nó

Ngoài ra, nhiều hiện tượng tự nhiên có phân bố giống hoặc tuân theo phân bố Gaussian. Nghĩa là nhiều hiện tượng tự nhiên có thể phù hợp với phân bố Gaussian để biểu diễn tính chất của hiện tượng

Hàm mật độ xác suất [PDF] của phân phối Gaussian được xây dựng như

Ở đâu $- \infty \leq x \leq \infty , - \infty \leq \mu \leq \infty , \sigma > 0$. $\sigma ^{2}$ là phương sai của phân phối và $\mu$ là giá trị trung bình hoặc trung bình của phân phối

biến

có thể được coi là hằng số $C$

LƯU Ý rằng chúng ta có thể thay đổi phương trình [1] thành các hàm phân phối thống kê khác để phù hợp với các đường cong phân phối của chúng

PDF của biến ngẫu nhiên $X$ là một hàm toán học mô tả xác suất của biến liên tục $X$ được rút ra từ phân phối thống kê liên tục, ví dụ như phân phối Gaussian, Hàm mũ và Gamma

Phân bố Gauss có dạng đường cong hình chuông. Hình 1 cho thấy các ví dụ về đường cong phân bố Gaussian hoặc hàm mật độ xác suất Gaussian [PDF]

Hình 1. Ví dụ về các đường cong Gaussian khác nhau [PDF] với các tham số khác nhau. [trái] là đường cong phân bố Gaussian cơ bản [PDF] với giá trị trung bình = 0 và phương sai = 1 và [phải] các loại đường cong Gaussian khác nhau [PDF]

ĐỌC THÊM. HƯỚNG DẪN. Macro Visual Basic cho Ứng dụng [VBA] trong Excel cho Mô phỏng Monte-Carlo

Hướng dẫn từng bước. Kết hợp phân phối Gaussian với dữ liệu bằng Python

Hướng dẫn từng bước để điều chỉnh Gaussian bằng cách sử dụng ngôn ngữ lập trình Python như sau

1. Nhập thư viện Python

Bước đầu tiên là chúng ta cần nhập các thư viện cần thiết cho chương trình Python. Chúng tôi sử dụng thư viện “Numpy” để thao tác ma trận, thư viện “Panda” để dễ dàng đọc tệp, “matplotlib” để vẽ đồ thị và thư viện “Scipy” để tối ưu hóa quy trình tối ưu hóa bình phương nhỏ nhất

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

import pandas as pd

from scipy import stats
from scipy.optimize import curve_fit
from scipy import asarray as ar,exp

Thư viện quan trọng nhất là “Scipy. tối ưu hóa” cho quy trình khớp vuông góc nhỏ nhất thông qua chức năng “curve_fit”

from scipy.optimize import curve_fit

2. đọc dữ liệu

Việc tiếp theo là đọc dữ liệu từ một tệp. Tệp có thể là tệp excel, tệp csv hoặc tệp văn bản hoặc bất kỳ tệp nào khác. Trong trường hợp này, chúng tôi sử dụng tệp văn bản để đọc dữ liệu từ

folder_path = 'Data.txt'
df_data = pd.read_csv[folder_path, sep="\t", header=None]

các pd. read_csv[] có tiêu đề tham số được đặt là Không có. Vì dữ liệu của chúng tôi trong tệp văn bản không chứa bất kỳ tiêu đề nào, [chỉ có dữ liệu], chúng tôi sử dụng tất cả giá trị đọc làm dữ liệu bao gồm hàng đầu tiên

vì tất cả các thao tác dữ liệu như vectơ và ma trận đều ở dạng “Numpy”, chúng tôi chuyển đổi “khung dữ liệu panda” thành định dạng dữ liệu “numpy”

df_numpy=df_data.to_numpy[dtype ='float32']

Ví dụ về dữ liệu, trong tệp văn bản được mở bằng ứng dụng notepad, như được hiển thị bên dưới

Từ dữ liệu trên, sau khi đọc tệp văn bản, ma trận của chúng ta [khung dữ liệu Panda] sẽ có kích thước là nx2 ma trận

Vì vậy, việc đọc dữ liệu rất linh hoạt và chúng ta có thể thực hiện theo nhiều cách…tùy thuộc vào chúng ta

3. Quy trình lắp bình phương nhỏ nhất Gaussian

Vì dữ liệu có hai cột nên trong trường hợp này, chúng tôi chỉ muốn cột đầu tiên của dữ liệu khớp với đường cong phân bố Gaussian để

Hình thành những dữ liệu này, sau đó chúng tôi tính toán biểu đồ là

x_data=df_numpy[:,0]

#plotting the histogram
hist, bin_edges = np.histogram[x_data]
hist=hist/sum[hist]

Hình 2 cho thấy biểu đồ được tính toán và vẽ từ dữ liệu đã đọc. Từ biểu đồ này, sau đó chúng tôi điều chỉnh đường cong phân phối Gaussian

Hình 2. Biểu đồ từ dữ liệu đã đọc

Sau đó, chúng tôi trích xuất thùng biểu đồ [$x$-axis] và các giá trị [$y$-axis] trong hình 2. Hai dữ liệu này sau đó được sử dụng để điều chỉnh đường cong Gaussian thông qua tối ưu hóa bình phương nhỏ nhất. Các mã để trích xuất thùng biểu đồ và các giá trị xác suất như sau

n = len[hist]
x_hist=np.zeros[[n],dtype=float] 
for ii in range[n]:
    x_hist[ii]=[bin_edges[ii+1]+bin_edges[ii]]/2
    
y_hist=hist

Bây giờ, chúng ta có mọi thứ để thực hiện khớp bình phương nhỏ nhất trên dữ liệu biểu đồ [hình 2]. Các mã dưới đây

#Calculating the Gaussian PDF values given Gaussian parameters and random variable X
def gaus[X,C,X_mean,sigma]:
    return C*exp[-[X-X_mean]**2/[2*sigma**2]]

mean = sum[x_hist*y_hist]/sum[y_hist]                  
sigma = sum[y_hist*[x_hist-mean]**2]/sum[y_hist] 

Quy trình khớp bình phương nhỏ nhất [tối ưu hóa] như sau

#Gaussian least-square fitting process
param_optimised,param_covariance_matrix = curve_fit[gaus,x_hist,y_hist,p0=[max[y_hist],mean,sigma],maxfev=5000]

Tham số được tối ưu hóa là $C$ [hằng số], $X_mean$ [giá trị trung bình] và $sigma$ [độ lệch chuẩn]. Việc tối ưu hóa ở trên về cơ bản là cực tiểu hóa hàm mục tiêu của

Để phù hợp với các phân phối thống kê khác, chúng ta chỉ cần thay đổi phương trình [1] và điều chỉnh tham số trong hàm “def gaus[params]”

4. Vẽ đường cong Gaussian

Cuối cùng, đồ thị của đường cong Gaussian phù hợp như trong hình 3 như sau

fig = plt.figure[]
x_hist_2=np.linspace[np.min[x_hist],np.max[x_hist],500]
plt.plot[x_hist_2,gaus[x_hist_2,*param_optimised],'r.:',label='Gaussian fit']
plt.legend[]

#Normalise the histogram values
weights = np.ones_like[x_data] / len[x_data]
plt.hist[x_data, weights=weights]

#setting the label,title and grid of the plot
plt.xlabel["Data: Random variable"]
plt.ylabel["Probability"]
plt.grid["on"]
plt.show[]
Hình 3. Đường cong Gaussian khớp với biểu đồ của dữ liệu đã đọc.

Mã Python để phù hợp với phân phối Gaussian

Mã đầy đủ để phù hợp với phân phối Gaussian cho dữ liệu như sau

# -*- coding: utf-8 -*-
"""
@author: wasy
"""
#STEP 1: IMPORT LIBRARIES ----------------------------------------------------
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

import pandas as pd

from scipy import stats
from scipy.optimize import curve_fit
from scipy import asarray as ar,exp

#close all opened figure
plt.close["all"]


#STEP 2: DATA READING---------------------------------------------------------
folder_path = 'Data.txt'
df_data = pd.read_csv[folder_path, sep="\t", header=None]

#Covert Panda dataframe to numpy
df_numpy=df_data.to_numpy[dtype ='float32']

#STEP 3: GAUSSIAN LEAST-SQUARE FITTING ---------------------------------------
x_data=df_numpy[:,0]

hist, bin_edges = np.histogram[x_data]
hist=hist/sum[hist]

n = len[hist]
x_hist=np.zeros[[n],dtype=float] 
for ii in range[n]:
    x_hist[ii]=[bin_edges[ii+1]+bin_edges[ii]]/2
    
y_hist=hist
       
#Calculating the Gaussian PDF values given Gaussian parameters and random variable X
def gaus[X,C,X_mean,sigma]:
    return C*exp[-[X-X_mean]**2/[2*sigma**2]]

mean = sum[x_hist*y_hist]/sum[y_hist]                  
sigma = sum[y_hist*[x_hist-mean]**2]/sum[y_hist] 

#Gaussian least-square fitting process
param_optimised,param_covariance_matrix = curve_fit[gaus,x_hist,y_hist,p0=[max[y_hist],mean,sigma],maxfev=5000]

#print fit Gaussian parameters
print["Fit parameters: "]
print["====================================================="]
print["C = ", param_optimised[0], "+-",np.sqrt[param_covariance_matrix[0,0]]]
print["X_mean =", param_optimised[1], "+-",np.sqrt[param_covariance_matrix[1,1]]]
print["sigma = ", param_optimised[2], "+-",np.sqrt[param_covariance_matrix[2,2]]]
print["\n"]


#STEP 4: PLOTTING THE GAUSSIAN CURVE -----------------------------------------
fig = plt.figure[]
x_hist_2=np.linspace[np.min[x_hist],np.max[x_hist],500]
plt.plot[x_hist_2,gaus[x_hist_2,*param_optimised],'r.:',label='Gaussian fit']
plt.legend[]

#Normalise the histogram values
weights = np.ones_like[x_data] / len[x_data]
plt.hist[x_data, weights=weights]

#setting the label,title and grid of the plot
plt.xlabel["Data: Random variable"]
plt.ylabel["Probability"]
plt.grid["on"]
plt.show[]

Sự kết luận

Trong bài đăng này, một hướng dẫn từng bước về cách điều chỉnh đường cong phân phối Gaussian trên dữ liệu đã được trình bày. Kỹ thuật này rất hữu ích cho nghiên cứu và phân tích trong mọi lĩnh vực từ khoa học tự nhiên và xã hội, kỹ thuật đến y học

Hướng dẫn này sử dụng ngôn ngữ lập trình Python. Ngoài miễn phí, ngôn ngữ Python này còn nổi tiếng về phân tích khoa học. Các mã nguồn được sử dụng trong hướng dẫn này cũng được trình bày và có thể được sao chép để sử dụng

Ngoài ra, phần giới thiệu ngắn gọn về phân bố Gaussian cũng được đưa ra nhằm làm mới kiến ​​thức của độc giả về phân bố Gaussian cũng như khái niệm cơ bản về hàm mật độ xác suất

Hướng dẫn điều chỉnh Gaussian này có thể được mở rộng để phù hợp với các phân phối thống kê khác với công thức phân phối đã biết

Chúng tôi bán tất cả các tệp nguồn, tệp EXE, tệp bao gồm và tệp LIB cũng như tài liệu về khớp hình elip bằng cách sử dụng thư viện C/C++, Qt framework, Eigen và OpenCV trong liên kết này

Chúng tôi bán các hướng dẫn [chứa tệp PDF, tập lệnh MATLAB và tệp CAD] về phân tích ngăn xếp dung sai 3D dựa trên phương pháp thống kê [Mô phỏng Monte-Carlo/MC]

Phân phối Gaussian Python là gì?

Phân phối chuẩn có thể được coi là đường cong hình chuông hoặc Phân phối Gaussian thường có hai tham số. trung bình và độ lệch chuẩn [SD] . Tham số dùng để đo độ biến thiên của các quan sát xung quanh giá trị trung bình được gọi là độ lệch chuẩn.

Một Gaussian cho chúng ta biết điều gì?

Phân phối chuẩn, còn được gọi là phân phối Gaussian, là phân phối xác suất đối xứng về giá trị trung bình, cho thấy rằng dữ liệu gần giá trị trung bình xuất hiện thường xuyên hơn dữ liệu ở xa giá trị trung bình. . Ở dạng đồ họa, phân phối chuẩn xuất hiện dưới dạng "đường cong hình chuông". . In graphical form, the normal distribution appears as a "bell curve".

Tại sao Gaussian được sử dụng?

Phân phối chuẩn [hoặc phân phối Gaussian], còn được gọi là đường cong hình chuông, rất hữu ích do định lý giới hạn trung tâm . Các trạng thái phân phối chuẩn là trung bình của các biến ngẫu nhiên hội tụ về phân phối chuẩn và được phân phối chuẩn khi số lượng biến ngẫu nhiên lớn.

Gaussian có giống như bình thường không?

Wikipedia đúng. Gaussian giống như bình thường

Chủ Đề