Hướng dẫn fit distribution to data python - phân phối phù hợp với dữ liệu python

Đôi khi bạn biết phân phối phù hợp nhất hoặc hàm mật độ xác suất của dữ liệu của bạn trước khi phân tích; Thường xuyên hơn, bạn không. Các cách tiếp cận để lấy mẫu dữ liệu, mô hình hóa và phân tích có thể thay đổi dựa trên phân phối dữ liệu của bạn và do đó, việc xác định phân phối lý thuyết phù hợp nhất có thể là một bước thiết yếu trong quá trình thăm dò dữ liệu của bạn.

Đây là nơi Distfit đến.

distfit là gói Python cho mật độ xác suất phù hợp trên 89 phân phối đơn biến cho dữ liệu không được kiểm duyệt bằng tổng số bình phương (RSS) và thử nghiệm giả thuyết. Phù hợp với mật độ xác suất là sự phù hợp của phân phối xác suất cho một loạt dữ liệu liên quan đến phép đo lặp đi lặp lại của một hiện tượng biến. distfit điểm số trong số 89 phân phối khác nhau cho sự phù hợp với phân phối thực nghiệm và trả về phân phối điểm tốt nhất.

Về cơ bản, chúng tôi có thể chuyển dữ liệu của mình cho DistFit và xác định nó phân phối xác suất nào dữ liệu phù hợp nhất, dựa trên số liệu RSS, sau khi nó cố gắng phù hợp với dữ liệu với 89 phân phối khác nhau. Sau đó, chúng ta có thể xem một lớp phủ trực quan hóa của dữ liệu thực nghiệm và phân phối phù hợp nhất. Chúng tôi cũng có thể xem một bản tóm tắt của quá trình, cũng như vẽ các kết quả phù hợp nhất.

Chúng ta hãy xem cách sử dụng Distfit để hoàn thành các nhiệm vụ này và xem việc sử dụng nó đơn giản như thế nào.

Đầu tiên, chúng tôi sẽ tạo ra một số dữ liệu; khởi tạo mô hình Distfit; và phù hợp với dữ liệu cho mô hình. Đây là cốt lõi của quy trình phù hợp phân phối Distfit.

import numpy as np
from distfit import distfit

# Generate 10000 normal distribution samples with mean 0, std dev of 3 
X = np.random.normal(0, 3, 10000)

# Initialize distfit
dist = distfit()

# Determine best-fitting probability distribution for data
dist.fit_transform(X)

Và Distfit Toils Away:

[distfit] >fit..
[distfit] >transform..
[distfit] >[norm      ] [0.00 sec] [RSS: 0.0004974] [loc=-0.002 scale=3.003]
[distfit] >[expon     ] [0.00 sec] [RSS: 0.1595665] [loc=-12.659 scale=12.657]
[distfit] >[pareto    ] [0.99 sec] [RSS: 0.1550162] [loc=-7033448.845 scale=7033436.186]
[distfit] >[dweibull  ] [0.28 sec] [RSS: 0.0027705] [loc=-0.001 scale=2.570]
[distfit] >[t         ] [0.25 sec] [RSS: 0.0004996] [loc=-0.002 scale=2.994]
[distfit] >[genextreme] [0.64 sec] [RSS: 0.0010127] [loc=-1.105 scale=3.007]
[distfit] >[gamma     ] [0.39 sec] [RSS: 0.0005046] [loc=-268.356 scale=0.034]
[distfit] >[lognorm   ] [0.84 sec] [RSS: 0.0005159] [loc=-227.504 scale=227.485]
[distfit] >[beta      ] [0.33 sec] [RSS: 0.0005016] [loc=-2746819.537 scale=2747059.862]
[distfit] >[uniform   ] [0.00 sec] [RSS: 0.1103102] [loc=-12.659 scale=22.811]
[distfit] >[loggamma  ] [0.73 sec] [RSS: 0.0005070] [loc=-554.304 scale=83.400]
[distfit] >Compute confidence interval [parametric]

Sau khi hoàn thành, chúng tôi có thể kiểm tra kết quả theo một vài cách khác nhau. Đầu tiên, chúng ta hãy xem bản tóm tắt được tạo ra.

# Print summary of evaluated distributions
print(dist.summary)

         distr        score  LLE          loc        scale  \
0         norm  0.000497419  NaN  -0.00231781      3.00297   
1            t  0.000499624  NaN  -0.00210365      2.99368   
2         beta  0.000501588  NaN -2.74682e+06  2.74706e+06   
3        gamma  0.000504569  NaN     -268.356    0.0336241   
4     loggamma  0.000506987  NaN     -554.304      83.3997   
5      lognorm   0.00051591  NaN     -227.504      227.485   
6   genextreme   0.00101271  NaN     -1.10495      3.00708   
7     dweibull   0.00277053  NaN  -0.00114977      2.56974   
8      uniform      0.11031  NaN      -12.659      22.8107   
9       pareto     0.155016  NaN -7.03345e+06  7.03344e+06   
10       expon     0.159567  NaN      -12.659      12.6567   

                                       arg  
0                                       ()  
1                     (323.7785925192121,)  
2   (73202573.87887828, 6404.720016859684)  
3                     (7981.006169767873,)  
4                     (770.4368441223046,)  
5                  (0.013180038142300822,)  
6                   (0.25551845624380576,)  
7                    (1.2640245435189867,)  
8                                       ()  
9                     (524920.1083231748,)  
10                                      () 

Dựa trên RSS (là 'điểm' trong bản tóm tắt trên) và nhớ lại rằng RSS thấp nhất sẽ cung cấp mức độ phù hợp nhất, dữ liệu của chúng tôi phù hợp nhất với phân phối bình thường.

Điều này có vẻ giống như một kết luận đã được bỏ qua, cho rằng chúng tôi đã lấy mẫu từ phân phối bình thường, nhưng đó không phải là trường hợp. Với sự tương đồng giữa nhiều bản phân phối, các lần chạy liên tiếp trên dữ liệu được lấy lại bằng cách sử dụng phân phối bình thường cho thấy nó cũng dễ dàng (có lẽ dễ dàng hơn?) Để kết thúc với sự phân phối phù hợp nhất của T, gamma, beta, log-normal hoặc log-gamma , để đặt tên nhưng một số ít, đặc biệt là trên các cỡ mẫu tương đối thấp.

Sau đó, chúng ta có thể vẽ kết quả phân phối phù hợp nhất so với dữ liệu thực nghiệm của chúng ta.

# Plot results
dist.plot()

& nbsp; & nbsp;

Hướng dẫn fit distribution to data python - phân phối phù hợp với dữ liệu python

 

Cuối cùng, chúng ta có thể vẽ bản tóm tắt phù hợp nhất để xem sự phù hợp của các bản phân phối so với nhau, trực quan.

& nbsp; & nbsp;

Hướng dẫn fit distribution to data python - phân phối phù hợp với dữ liệu python

 

Cuối cùng, chúng ta có thể vẽ bản tóm tắt phù hợp nhất để xem sự phù hợp của các bản phân phối so với nhau, trực quan.

Từ những điều trên, bạn có thể thấy sự tốt đẹp tương đối của sự phù hợp của một số phân phối phù hợp nhất với dữ liệu của chúng tôi.

Bên cạnh sự phù hợp phân phối, Distfit cũng có các trường hợp sử dụng khác:

Hàm distfit có nhiều trường hợp sử dụng. Trước hết để xác định phân phối lý thuyết tốt nhất cho dữ liệu của bạn. Điều này có thể làm giảm hàng chục nghìn điểm dữ liệu thành 3 tham số nổi. Một ứng dụng khác là để phát hiện ngoại lệ. Một phân phối null có thể được xác định bằng cách sử dụng trạng thái bình thường. Các dữ liệu mới lệch đáng kể sau đó có thể được đánh dấu là các ngoại lệ và có khả năng được quan tâm. Việc phân phối null cũng có thể được tạo ra bằng các phương pháp ngẫu nhiên/hoán vị. Trong trường hợp như vậy, các dữ liệu mới sẽ được đánh dấu nếu nó lệch đáng kể so với tính ngẫu nhiên.

Bạn có thể tìm thấy các ví dụ cho các trường hợp sử dụng này trong tài liệu Distfit.Matthew Mayo (@mattmayo13) is a Data Scientist and the Editor-in-Chief of KDnuggets, the seminal online Data Science and Machine Learning resource. His interests lie in natural language processing, algorithm design and optimization, unsupervised learning, neural networks, and automated approaches to machine learning. Matthew holds a Master's degree in computer science and a graduate diploma in data mining. He can be reached at editor1 at kdnuggets[dot]com.

Tạo một mảng chứa 250 phao ngẫu nhiên trong khoảng từ 0 đến 5: Nhập Numpy. ....

Làm thế nào để phù hợp với dữ liệu để phân phối trong Python..
Dữ liệu = NP. ngẫu nhiên. Bình thường (0, 0,5, 1000).
trung bình, var = scipy. số liệu thống kê. Phân phối. định mức. phù hợp (dữ liệu).
x = np. không gian linsp (-5,5,100).
FITTED_DATA = SCIPY. số liệu thống kê. Phân phối. định mức. ....
plt. Lịch sử (dữ liệu, mật độ = true).
plt. Lô đất (x, fited_data, 'r-') âm mưu dữ liệu và fited_data ..

Làm thế nào để bạn phù hợp với một phân phối vào dữ liệu?

Sử dụng các sơ đồ xác suất để xác định phân phối dữ liệu của bạn. Các sơ đồ xác suất có thể là cách tốt nhất để xác định xem dữ liệu của bạn có tuân theo một phân phối cụ thể hay không. Nếu dữ liệu của bạn theo đường thẳng trên biểu đồ, phân phối phù hợp với dữ liệu của bạn. Quá trình này là đơn giản để làm trực quan.If your data follow the straight line on the graph, the distribution fits your data. This process is simple to do visually.

Làm thế nào để bạn phù hợp với một phân phối bình thường cho một biểu đồ trong Python?

Làm thế nào để phù hợp với một phân phối cho một biểu đồ trong Python..
Dữ liệu = NP. ngẫu nhiên. Bình thường (0, 1, 1000) Tạo bộ dữ liệu bình thường ngẫu nhiên ..
_, thùng, _ = plt. Lịch sử (dữ liệu, 20, mật độ = 1, alpha = 0,5) tạo biểu đồ từ `data`.
Mu, Sigma = Scipy. số liệu thống kê. định mức. phù hợp (dữ liệu).
best_fit_line = scipy. số liệu thống kê. định mức. ....
plt. Lô đất (Bins, Best_Fit_Line).

Làm thế nào để bạn hiển thị phân phối dữ liệu trong Python?

Học máy - Phân phối dữ liệu..
❮ Trước Sau ❯.
Học máy - Phân phối dữ liệu.
Vẽ một biểu đồ: Nhập Numpy.....
Tạo một mảng với 100000 số ngẫu nhiên và hiển thị chúng bằng biểu đồ với 100 thanh: nhập Numpy.....
❮ Trước Sau ❯.