Dưới đây là một ví dụ sử dụng scipy.optimize để phù hợp với các chức năng phi tuyến tính như Gaussian, ngay cả khi dữ liệu nằm trong một biểu đồ không được vắt tốt, do đó ước tính trung bình đơn giản sẽ thất bại. Một hằng số bù cũng sẽ khiến các số liệu thống kê bình thường đơn giản thất bại [chỉ cần loại bỏ p [3] và c [3] cho dữ liệu Gaussian đơn giản].
from pylab import *
from numpy import loadtxt
from scipy.optimize import leastsq
fitfunc = lambda p, x: p[0]*exp[-0.5*[[x-p[1]]/p[2]]**2]+p[3]
errfunc = lambda p, x, y: [y - fitfunc[p, x]]
filename = "gaussdata.csv"
data = loadtxt[filename,skiprows=1,delimiter=',']
xdata = data[:,0]
ydata = data[:,1]
init = [1.0, 0.5, 0.5, 0.5]
out = leastsq[ errfunc, init, args=[xdata, ydata]]
c = out[0]
print "A exp[-0.5[[x-mu]/sigma]^2] + k "
print "Parent Coefficients:"
print "1.000, 0.200, 0.300, 0.625"
print "Fit Coefficients:"
print c[0],c[1],abs[c[2]],c[3]
plot[xdata, fitfunc[c, xdata]]
plot[xdata, ydata]
title[r'$A = %.3f\ \mu = %.3f\ \sigma = %.3f\ k = %.3f $' %[c[0],c[1],abs[c[2]],c[3]]];
show[]
Output:
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
plt. Lô đất [Bins, Best_Fit_Line].
Làm thế nào để bạn phù hợp với một dữ liệu Gaussian trong Python?
Hướng dẫn từng bước: Phân phối Gaussian phù hợp với dữ liệu với Python.
Nhập thư viện Python. Bước đầu tiên là chúng tôi cần nhập thư viện cần thiết cho chương trình Python. ....
- Đọc dữ liệu. Tiếp theo là đọc dữ liệu từ một tệp. .... method for finding the normal distribution of the data. It has three parameters:
- Quá trình phù hợp bình phương nhất Gaussian. ....– [average] where the top of the bell is located.
- Tỷ lệ - [độ lệch chuẩn] Làm thế nào đồng nhất bạn muốn biểu đồ được phân phối.– [standard deviation] how uniform you want the graph to be distributed.
- Kích thước - Hình dạng của mảng trở lại– Shape of the returning Array
- Hiểu hist [] trong mô -đun pyplot của thư viện matplotlib được sử dụng để vẽ biểu đồ. Nó có các tham số như: & nbsp;hist[] in the
Pyplot module of the Matplotlib library is used to draw histograms. It has parameters like:
- Dữ liệu: Tham số này là một chuỗi dữ liệu.: This parameter is a data sequence.
- BIN: Tham số này là tùy chọn và chứa số nguyên, trình tự hoặc chuỗi.: This parameter is optional and contains integers, sequences or strings.
- Mật độ: Tham số này là tùy chọn và chứa giá trị boolean.: This parameter is optional and contains a Boolean value.
- Alpha: Giá trị là một số nguyên từ 0 đến 1, đại diện cho tính minh bạch của mỗi biểu đồ. Giá trị của N càng nhỏ, biểu đồ trong suốt.: Value is an integer between 0 and 1, which represents the transparency of each histogram. The smaller the value of n, the more transparent the histogram.
Python3
import
numpy as np
import
matplotlib.pyplot as plt
Các
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
6=
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
8A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
9=
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation1
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation2
=
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation4
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation5
=
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation7
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
5# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation9
Output:
Phân phối bình thường
Biểu đồ phân phối bình thường được đặc trưng bởi hai tham số: & nbsp;normal distribution chart is characterized by two parameters:
- Giá trị trung bình, đại diện cho giá trị tối đa của biểu đồ và biểu đồ luôn đối xứng. & NBSP;
- Và độ lệch chuẩn, xác định lượng thay đổi vượt quá giá trị trung bình. Độ lệch chuẩn nhỏ hơn [so với giá trị trung bình] xuất hiện dốc hơn, trong khi độ lệch chuẩn lớn hơn [so với giá trị trung bình] xuất hiện phẳng.
Vẽ sơ đồ phân phối bình thường
- Numpy arange [] được sử dụng để tạo và trả về một tham chiếu đến một thể hiện ndarray phân phối thống nhất. & Nbsp;
- Với sự trợ giúp của phương thức trung bình [] và stdev [], chúng tôi đã tính toán độ lệch trung bình và tiêu chuẩn và khởi tạo theo biến và biến SD. & NBSP;mean[] and stdev[] method, we calculated the mean and standard deviation and initialized to mean and sd variable.
- Bên trong phương thức lô [], chúng tôi đã sử dụng một phương thức pdf [] để hiển thị hàm mật độ xác suất. Phương thức pdf [] này xuất hiện bên trong scipy.stats.norm. & Nbsp;pdf[] for displaying the probability density function. This pdf[] method present inside the scipy.stats.norm.
Example:
Python3
import
numpy as np
import
matplotlib.pyplot as plt
Các
Phân phối bình thường
Biểu đồ phân phối bình thường được đặc trưng bởi hai tham số: & nbsp;
Giá trị trung bình, đại diện cho giá trị tối đa của biểu đồ và biểu đồ luôn đối xứng. & NBSP;
Và độ lệch chuẩn, xác định lượng thay đổi vượt quá giá trị trung bình. Độ lệch chuẩn nhỏ hơn [so với giá trị trung bình] xuất hiện dốc hơn, trong khi độ lệch chuẩn lớn hơn [so với giá trị trung bình] xuất hiện phẳng.
import
6
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation9
Output:
Vẽ sơ đồ phân phối bình thường
Numpy arange [] được sử dụng để tạo và trả về một tham chiếu đến một thể hiện ndarray phân phối thống nhất. & Nbsp; plt.show[]. Now, Let’s discuss about Plotting Normal Distribution over Histogram using Python.
Với sự trợ giúp của phương thức trung bình [] và stdev [], chúng tôi đã tính toán độ lệch trung bình và tiêu chuẩn và khởi tạo theo biến và biến SD. & NBSP;
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation
Bên trong phương thức lô [], chúng tôi đã sử dụng một phương thức pdf [] để hiển thị hàm mật độ xác suất. Phương thức pdf [] này xuất hiện bên trong scipy.stats.norm. & Nbsp;
import
4import
5import
import
7matplotlib.pyplot.xlim [*args, **kwargs]
import
import
9This method uses the following parameters, as described below:
numpy as np
0=
numpy as np
2numpy as np
3numpy as np
41____4444____11____48A exp[-0.5[[x-mu]/sigma]^2] + k Parent Coefficients: 1.000, 0.200, 0.300, 0.625 Fit Coefficients: 0.961231625289 0.197254597618 0.293989275502 0.65370344131
5: Use this parameter to set xlim to the left.A exp[-0.5[[x-mu]/sigma]^2] + k Parent Coefficients: 1.000, 0.200, 0.300, 0.625 Fit Coefficients: 0.961231625289 0.197254597618 0.293989275502 0.65370344131
import
0=
import
2: Use this parameter to set xlim on the right.import
3=
import
5: This parameter is a text attribute that controls the appearance of the label.Phân phối bình thường trên biểu đồ
- Bây giờ, chúng tôi đã hoàn thành phân tách biểu đồ và thảo luận sơ đồ phân phối bình thường, nhưng sẽ thật tuyệt nếu chúng tôi có thể hình dung chúng trong một biểu đồ có cùng một thang đo. Điều này có thể dễ dàng đạt được bằng cách truy cập hai biểu đồ trong cùng một ô và sau đó sử dụng plt.show []. Bây giờ, hãy để thảo luận về việc vẽ sơ đồ phân phối bình thường trên Biểu đồ bằng Python. & NBSP; return a tuple of the new limit value of the x-axis.
Python3
import
numpy as np
Các
import
matplotlib.pyplot as plt
Các
Phân phối bình thường
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
6=
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
8A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
9=
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation1
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation2
=
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation4
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation5
=
# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation7
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
5Biểu đồ phân phối bình thường được đặc trưng bởi hai tham số: & nbsp;
Giá trị trung bình, đại diện cho giá trị tối đa của biểu đồ và biểu đồ luôn đối xứng. & NBSP;
Và độ lệch chuẩn, xác định lượng thay đổi vượt quá giá trị trung bình. Độ lệch chuẩn nhỏ hơn [so với giá trị trung bình] xuất hiện dốc hơn, trong khi độ lệch chuẩn lớn hơn [so với giá trị trung bình] xuất hiện phẳng.
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
02A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
03A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
04=
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
06A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
5Vẽ sơ đồ phân phối bình thường
A exp[-0.5[[x-mu]/sigma]^2] + k
Parent Coefficients:
1.000, 0.200, 0.300, 0.625
Fit Coefficients:
0.961231625289 0.197254597618 0.293989275502 0.65370344131
14# Make the normal distribution fit the data: mu, std = norm.fit [data] # mean and standard deviation9
Output: