Hướng dẫn sample from empirical distribution python - mẫu từ python phân phối theo kinh nghiệm

Cập nhật lần cuối vào ngày 28 tháng 8 năm 2020

Chức năng phân phối thực nghiệm cung cấp một cách để mô hình hóa và xác suất tích lũy mẫu cho một mẫu dữ liệu không phù hợp với phân phối xác suất tiêu chuẩn.

Như vậy, đôi khi nó được gọi là hàm phân phối tích lũy theo kinh nghiệm, hoặc ngắn gọn là ECDF.empirical cumulative distribution function, or ECDF for short.

Trong hướng dẫn này, bạn sẽ khám phá chức năng phân phối xác suất thực nghiệm.

Sau khi hoàn thành hướng dẫn này, bạn sẽ biết:

  • Một số mẫu dữ liệu không thể được tóm tắt bằng cách sử dụng phân phối tiêu chuẩn.
  • Một chức năng phân phối thực nghiệm cung cấp một cách mô hình hóa xác suất tích lũy cho một mẫu dữ liệu.
  • Cách sử dụng thư viện StatSmodels để mô hình hóa và lấy mẫu chức năng phân phối tích lũy theo kinh nghiệm.

Bắt đầu dự án của bạn với xác suất sách mới của tôi cho học máy, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python & NBSP; cho tất cả các ví dụ. with my new book Probability for Machine Learning, including step-by-step tutorials and the Python source code files for all examples.

Bắt đầu nào.

Hướng dẫn sample from empirical distribution python - mẫu từ python phân phối theo kinh nghiệm

Cách sử dụng chức năng phân phối thực nghiệm trong Pythonphoto của Gigi Griffis, một số quyền được bảo lưu.
Photo by Gigi Griffis, some rights reserved.

Tổng quan hướng dẫn

Hướng dẫn này được chia thành ba phần; họ đang:

  1. Chức năng phân phối thực nghiệm
  2. Phân phối dữ liệu bimodal
  3. Lấy mẫu phân phối thực nghiệm

Chức năng phân phối thực nghiệm

Phân phối dữ liệu bimodal

Lấy mẫu phân phối thực nghiệm

Thông thường, phân phối các quan sát cho một mẫu dữ liệu phù hợp với phân phối xác suất nổi tiếng.

Ví dụ, chiều cao của con người sẽ phù hợp với phân phối xác suất bình thường (Gaussian).

Đây không phải là luôn luôn như vậy. Đôi khi các quan sát trong mẫu dữ liệu được thu thập không phù hợp với bất kỳ phân phối xác suất đã biết nào và không thể dễ dàng bị buộc vào phân phối hiện có bằng cách chuyển đổi dữ liệu hoặc tham số hóa hàm phân phối.

  • Thay vào đó, một phân phối xác suất thực nghiệm phải được sử dụng.
  • Có hai loại chức năng phân phối xác suất chính mà chúng ta có thể cần lấy mẫu; họ đang:

Hàm mật độ xác suất (PDF).

Hàm phân phối tích lũy (CDF).

PDF trả về xác suất dự kiến ​​để quan sát một giá trị. Đối với dữ liệu riêng biệt, PDF được gọi là hàm khối xác suất (PMF). CDF trả về xác suất dự kiến ​​để quan sát giá trị nhỏ hơn hoặc bằng một giá trị nhất định.

Hàm mật độ xác suất thực nghiệm có thể phù hợp và được sử dụng để lấy mẫu dữ liệu bằng phương pháp ước tính mật độ không theo tỷ lệ, chẳng hạn như ước tính mật độ hạt nhân (KDE).

Một hàm phân phối tích lũy thực nghiệm được gọi là hàm phân phối thực nghiệm, hoặc viết tắt là EDF. Nó cũng được gọi là hàm phân phối tích lũy thực nghiệm, hoặc ECDF.

  • EDF được tính toán bằng cách đặt hàng tất cả các quan sát duy nhất trong mẫu dữ liệu và tính xác suất tích lũy cho mỗi lần quan sát nhỏ hơn hoặc bằng với một quan sát nhất định chia cho tổng số quan sát.

Như sau:

Edf (x) = số lượng quan sát

Giống như các hàm phân phối tích lũy khác, tổng xác suất sẽ tiến hành từ 0,0 đến 1,0 vì các quan sát trong miền được liệt kê từ nhỏ nhất đến lớn nhất.

Để làm cho chức năng phân phối thực nghiệm bê tông, hãy để Lôi xem xét một ví dụ với một bộ dữ liệu rõ ràng không phù hợp với phân phối xác suất đã biết.

Muốn học xác suất cho việc học máy

Phân phối dữ liệu bimodal

Lấy mẫu phân phối thực nghiệm

Thông thường, phân phối các quan sát cho một mẫu dữ liệu phù hợp với phân phối xác suất nổi tiếng.

Ví dụ, chiều cao của con người sẽ phù hợp với phân phối xác suất bình thường (Gaussian).

Đây không phải là luôn luôn như vậy. Đôi khi các quan sát trong mẫu dữ liệu được thu thập không phù hợp với bất kỳ phân phối xác suất đã biết nào và không thể dễ dàng bị buộc vào phân phối hiện có bằng cách chuyển đổi dữ liệu hoặc tham số hóa hàm phân phối.

Thay vào đó, một phân phối xác suất thực nghiệm phải được sử dụng.

Có hai loại chức năng phân phối xác suất chính mà chúng ta có thể cần lấy mẫu; họ đang:

Hàm mật độ xác suất (PDF).matplotlib import pyplot

Hàm phân phối tích lũy (CDF).numpy.random import normal

PDF trả về xác suất dự kiến ​​để quan sát một giá trị. Đối với dữ liệu riêng biệt, PDF được gọi là hàm khối xác suất (PMF). CDF trả về xác suất dự kiến ​​để quan sát giá trị nhỏ hơn hoặc bằng một giá trị nhất định.numpy import hstack

Hàm mật độ xác suất thực nghiệm có thể phù hợp và được sử dụng để lấy mẫu dữ liệu bằng phương pháp ước tính mật độ không theo tỷ lệ, chẳng hạn như ước tính mật độ hạt nhân (KDE).

sample1=normal(loc=20,scale=5,size=300)= normal(loc=20,scale=5,size=300)

sample2=normal(loc=40,scale=5,size=700)=normal(loc=40,scale=5, size=700)

sample=hstack((sample1,sample2))=hstack((sample1,sample2))

Một hàm phân phối tích lũy thực nghiệm được gọi là hàm phân phối thực nghiệm, hoặc viết tắt là EDF. Nó cũng được gọi là hàm phân phối tích lũy thực nghiệm, hoặc ECDF.

pyplot.hist(sample,bins=50).hist(sample,bins=50)

pyplot.show().show()

EDF được tính toán bằng cách đặt hàng tất cả các quan sát duy nhất trong mẫu dữ liệu và tính xác suất tích lũy cho mỗi lần quan sát nhỏ hơn hoặc bằng với một quan sát nhất định chia cho tổng số quan sát.

Như sau:: Your results may vary given the stochastic nature of the algorithm or evaluation procedure, or differences in numerical precision. Consider running the example a few times and compare the average outcome.

Chúng ta có ít mẫu hơn với giá trị trung bình 20 so với các mẫu có giá trị trung bình là 40, chúng ta có thể thấy được phản ánh trong biểu đồ với mật độ mẫu lớn hơn khoảng 40 so với khoảng 20.

Hướng dẫn sample from empirical distribution python - mẫu từ python phân phối theo kinh nghiệm

Biểu đồ biểu đồ của mẫu dữ liệu với phân phối xác suất lưỡng kim

Dữ liệu với phân phối này không phù hợp với phân phối xác suất chung theo thiết kế.

Dưới đây là một biểu đồ của hàm mật độ xác suất (PDF) của mẫu dữ liệu này.

Hướng dẫn sample from empirical distribution python - mẫu từ python phân phối theo kinh nghiệm

Chức năng mật độ xác suất thực nghiệm cho mẫu dữ liệu lưỡng kim

Đó là một trường hợp tốt để sử dụng chức năng phân phối thực nghiệm.

Tính chức năng phân phối thực nghiệm

Một chức năng phân phối thực nghiệm có thể phù hợp với một mẫu dữ liệu trong Python.

Thư viện Python Statmodels cung cấp lớp ECDF để phù hợp với chức năng phân phối tích lũy theo kinh nghiệm và tính toán xác suất tích lũy cho các quan sát cụ thể từ miền.

Phân phối phù hợp bằng cách gọi ECDF () và truyền trong mẫu dữ liệu thô.

.....

# phù hợp với CDF

ecdf=ECDF(sample)=ECDF(sample)

Khi phù hợp, hàm có thể được gọi để tính xác suất tích lũy cho một quan sát nhất định.

.....

# phù hợp với CDF

print('P(x('P(x<20): %.3f'%ecdf(20))

print('P(x('P(x<40): %.3f'%ecdf(40))

print('P(x('P(x<60): %.3f'%ecdf(60))

Khi phù hợp, hàm có thể được gọi để tính xác suất tích lũy cho một quan sát nhất định.

.....

# phù hợp với CDF

pyplot.plot(ecdf.x,ecdf.y).plot(ecdf.x,ecdf.y)

pyplot.show().show()

Khi phù hợp, hàm có thể được gọi để tính xác suất tích lũy cho một quan sát nhất định.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# Nhận xác suất tích lũy cho các giá trị

Lớp cũng cung cấp một danh sách các quan sát độc đáo trong dữ liệu (thuộc tính .x) và xác suất liên quan của chúng (thuộc tính .y). Chúng ta có thể truy cập các thuộc tính này và vẽ trực tiếp chức năng CDF.matplotlib import pyplot

# vẽ sơ đồ CDFnumpy.random import normal

Kết hợp điều này lại với nhau, ví dụ hoàn chỉnh về việc phù hợp với chức năng phân phối thực nghiệm cho mẫu dữ liệu lưỡng kim là bên dưới.numpy import hstack

# phù hợp với một cdf thực nghiệm vào bộ dữ liệu lưỡng kimstatsmodels.distributions.empirical_distribution import ECDF

từ pyplot nhập khẩu matplotlib

sample1=normal(loc=20,scale=5,size=300)=normal(loc=20,scale=5,size=300)

sample2=normal(loc=40,scale=5,size=700)= normal(loc=40,scale=5,size=700)

sample=hstack((sample1,sample2))=hstack((sample1,sample2))

# phù hợp với CDF

ecdf=ECDF(sample) =ECDF(sample)

# phù hợp với CDF

print('P(x('P(x<20): %.3f'%ecdf(20))

print('P(x('P(x<40): %.3f'% ecdf(40))

print('P(x('P(x<60): %.3f'%ecdf(60))

# phù hợp với CDF

pyplot.plot(ecdf.x,ecdf.y).plot(ecdf.x, ecdf.y)

pyplot.show().show()

Khi phù hợp, hàm có thể được gọi để tính xác suất tích lũy cho một quan sát nhất định.: Your results may vary given the stochastic nature of the algorithm or evaluation procedure, or differences in numerical precision. Consider running the example a few times and compare the average outcome.

# Nhận xác suất tích lũy cho các giá trị

P(x

P(x

P(x

Lớp cũng cung cấp một danh sách các quan sát độc đáo trong dữ liệu (thuộc tính .x) và xác suất liên quan của chúng (thuộc tính .y). Chúng ta có thể truy cập các thuộc tính này và vẽ trực tiếp chức năng CDF.

# vẽ sơ đồ CDF

Hướng dẫn sample from empirical distribution python - mẫu từ python phân phối theo kinh nghiệm

Kết hợp điều này lại với nhau, ví dụ hoàn chỉnh về việc phù hợp với chức năng phân phối thực nghiệm cho mẫu dữ liệu lưỡng kim là bên dưới.

# phù hợp với một cdf thực nghiệm vào bộ dữ liệu lưỡng kim

từ pyplot nhập khẩu matplotlib

từ numpy.random nhập khẩu bình thường

  • từ Hstack nhập khẩu Numpy
  • từ statsmodels.distributions.empirical_distribution nhập ECDF

# Tạo mẫu

  • Lưu ý: Kết quả của bạn có thể khác nhau với tính chất ngẫu nhiên của thuật toán hoặc quy trình đánh giá, hoặc sự khác biệt về độ chính xác số. Xem xét chạy ví dụ một vài lần và so sánh kết quả trung bình.

Chạy ví dụ phù hợp với CDF thực nghiệm vào mẫu dữ liệu, sau đó in xác suất tích lũy để quan sát ba giá trị.

  • Sau đó, xác suất tích lũy cho toàn bộ miền được tính toán và hiển thị dưới dạng biểu đồ dòng.
  • Ở đây, chúng ta có thể thấy đường cong hình chữ S quen thuộc được thấy đối với hầu hết các hàm phân phối tích lũy, ở đây với các va chạm xung quanh giá trị trung bình của cả hai đỉnh của phân phối lưỡng kim.
  • Chức năng phân phối tích lũy theo kinh nghiệm cho mẫu dữ liệu lưỡng kim
  • Đọc thêm

Phần này cung cấp nhiều tài nguyên hơn về chủ đề nếu bạn đang muốn đi sâu hơn.

Sách

Mục 2.3.4 Phân phối thực nghiệm, học máy: Một quan điểm xác suất, 2012.

  • Mục 3.9.5 Phân phối Dirac và phân phối thực nghiệm, Học sâu, 2016.
  • API
  • StatSmodels.distributions.empirical_distribution.ecdf API

Bài viết
Ask your questions in the comments below and I will do my best to answer.

Chức năng phân phối thực nghiệm, Wikipedia.

Hướng dẫn sample from empirical distribution python - mẫu từ python phân phối theo kinh nghiệm

Chức năng phân phối tích lũy, Wikipedia.

Hàm mật độ xác suất, wikipedia.

Ước tính mật độ hạt nhân, Wikipedia.
Probability for Machine Learning

Bản tóm tắtself-study tutorials and end-to-end projects on:
Bayes Theorem, Bayesian Optimization, Distributions, Maximum Likelihood, Cross-Entropy, Calibrating Models
and much more...

Trong hướng dẫn này, bạn đã phát hiện ra chức năng phân phối xác suất thực nghiệm.

Cụ thể, bạn đã học được:

Một số mẫu dữ liệu không thể được tóm tắt bằng cách sử dụng phân phối tiêu chuẩn.

Phân phối thực nghiệm của một mẫu là gì?

Phân phối thực nghiệm, hoặc chức năng phân phối thực nghiệm, có thể được sử dụng để mô tả một mẫu quan sát của một biến nhất định. Giá trị của nó tại một điểm nhất định bằng tỷ lệ quan sát từ mẫu nhỏ hơn hoặc bằng điểm đó.a sample of observations of a given variable. Its value at a given point is equal to the proportion of observations from the sample that are less than or equal to that point.

Sự khác biệt giữa phân phối thực nghiệm và phân phối lấy mẫu là gì?

Nói một cách đơn giản, một phân phối thực nghiệm thay đổi W.R.T.Đối với mẫu thực nghiệm, trong khi phân phối lý thuyết không w.r.t.đến mẫu đến từ nó.Hoặc đặt nó một cách khác, một phân phối thực nghiệm được xác định bởi mẫu, trong khi phân phối lý thuyết có thể xác định mẫu ra khỏi nó.an empirical distribution changes w.r.t. to the empirical sample, whereas a theoretical distribution doesn't w.r.t. to the sample coming from it. Or put it another way, an empirical distribution is determined by the sample, whereas a theoretical distribution can determine the sample coming out of it.

Làm thế nào để Python tính toán ECDF?

Instructions..
Tính toán số lượng điểm dữ liệu, n, sử dụng hàm Len () ..
Giá trị là dữ liệu được sắp xếp ..
Dữ liệu của ECDF đi từ 1/N đến 1 theo mức tăng cách đều nhau.Bạn có thể xây dựng điều này bằng NP.Arange ().Tuy nhiên, hãy nhớ rằng giá trị cuối cùng trong NP.....
Hàm trả về các giá trị x và y ..

Phân phối thực nghiệm có nghĩa là gì?

Một phân phối thực nghiệm là một trong đó mỗi sự kiện có thể được gán một xác suất xuất phát từ quan sát thử nghiệm.Người ta cho rằng các sự kiện là độc lập và tổng của xác suất là 1. Một phân phối thực nghiệm có thể đại diện cho một liên tục hoặc rời rạc.phân bổ.one for which each possible event is assigned a probability derived from experimental observation. It is assumed that the events are independent and the sum of the probabilities is 1. An empirical distribution may represent either a continuous or a discrete. distribution.