Python ngẫu nhiên với xác suất

Tính ngẫu nhiên là linh hồn của thống kê và cho đến nay, thống kê đóng một vai trò quan trọng trong sự phát triển của khoa học dữ liệu và các khái niệm máy học. Ví dụ: chúng tôi tạo các mẫu ngẫu nhiên, chúng tôi gán trọng số ngẫu nhiên cho mạng thần kinh nhân tạo, chúng tôi cũng chia dữ liệu ngẫu nhiên thành các bộ dữ liệu thử nghiệm và huấn luyện, và nhiều khái niệm khác từ khoa học dữ liệu yêu cầu số ngẫu nhiên và mẫu ngẫu nhiên.  

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách tạo các mẫu ngẫu nhiên từ các phân phối xác suất khác nhau và làm việc với chúng. Sau khi hoàn thành bài viết hướng dẫn này, bạn sẽ có thể hiểu cách tạo các mẫu ngẫu nhiên thông qua các phân phối xác suất khác nhau (rời rạc và liên tục) cũng như bạn sẽ học được một số điều bổ sung như vẽ sơ đồ các phân phối ngẫu nhiên được lấy mẫu.  

(Phải đọc. CÁC LOẠI DỮ LIỆU trong Python)

Mô-đun ngẫu nhiên và scipy để tạo các mẫu ngẫu nhiên

Như bài viết trước của tôi cũng đã giới thiệu, mô-đun/thư viện ngẫu nhiên rất quan trọng để tạo số ngẫu nhiên và mẫu ngẫu nhiên từ các phân phối xác suất khác nhau (chủ yếu là liên tục). Bạn có thể đọc bài viết Làm việc với số ngẫu nhiên trong Python để kết nối các dấu chấm từ bài viết này.  

Bên cạnh đó, chúng tôi đang giới thiệu một mô-đun mới scipy. số liệu thống kê để tạo các mẫu ngẫu nhiên từ các bản phân phối riêng biệt như chất độc, nhị thức, v.v. Tìm hiểu tất cả các loại mô hình phân phối dữ liệu theo liên kết

Nhập hai mô-đun này cùng với pyplot từ matplotlib rất đơn giản và như hình bên dưới

#importing random module in python environment

import random as rnd



#Importing scipy module in python environment

import scipy.stats as scpy



#Importing matplotlib module in python environment

import matplotlib.pyplot as plt

matplotlib. pyplot sẽ giúp chúng tôi hình dung sự phân phối của các mẫu ngẫu nhiên mà chúng tôi sẽ lấy

(Cũng đọc. Bước đầu tiên đối với Python)

Tạo mẫu ngẫu nhiên từ phân phối nhị thức

Chà, để tạo một mẫu ngẫu nhiên từ phân phối nhị thức, chúng ta có thể sử dụng hàm nhị thức. phương thức rvs() từ scipy. mô-đun thống kê. Phương pháp này lấy n (số lần thử) và p (xác suất thành công) làm tham số cùng với kích thước.  

Tham số kích thước cho phép bạn giới hạn các điểm mẫu lên đến một số cụ thể.  

The syntax for the binom.rvs() method is as shown below:

binom.rvs(n, p, size)



Where, 

n -  specifies the number of trials,

p - specifies the probability or chance of success

size - specifies the sample size default value as 1.

Bây giờ, chúng ta hãy lấy một ví dụ đơn giản nơi chúng ta cố gắng tạo một mẫu nhị thức ngẫu nhiên có kích thước 5, với các tham số n = 12 và p = 0. 6. Mã như hình bên dưới

#importing the binom module from scipy.stats in python environment

from scipy.stats import binom



#Generating five random binomial numbers from a given distribution



for i in range(5):

    rnd_binom = binom.rvs(n = 12, p = 0.6)

    print(rnd_binom)

Bây giờ, nếu chúng ta chạy đoạn mã trên, chúng ta sẽ thấy đầu ra như hình bên dưới


Python ngẫu nhiên với xác suất

Một mẫu ngẫu nhiên gồm năm số từ phân phối nhị thức


Lưu ý rằng, chúng tôi có thể đã sử dụng các đối số size = 5 và tạo một mẫu ngẫu nhiên gồm 5 đối số. Tuy nhiên, nó sẽ cho chúng ta một danh sách năm mẫu.  

Bây giờ, chúng ta hãy thử tạo một mẫu ngẫu nhiên gồm 10.000 mục và vẽ biểu đồ bằng mô-đun pyplot để xem phân phối của biến nhị thức

#importing the binom module from scipy.stats in python environment

from scipy.stats import binom



#importing pyplot module as plt from matplotlib in python environment

import matplotlib.pyplot as plt



#Generating a random sample of size 10000 from binomial distribution with n = 12 and p = 0.6

binom_rnd_sample = binom.rvs(n = 12, p = 0.6, size = 10000)



#Plotting the distribution using plt.hist method

plt.hist(binom_rnd_sample, bins = 50)

Ở đây, chúng tôi đang tạo một mẫu ngẫu nhiên có kích thước 10.000 từ phân phối nhị thức với n = 12 và p = 0. 6. Sau đó, plt. phương thức hist() được sử dụng để tạo biểu đồ từ mẫu được tạo. Xem đầu ra như hình dưới đây


Python ngẫu nhiên với xác suất

Vẽ một mẫu nhị thức ngẫu nhiên có kích thước 10.000


Bạn cũng có thể thấy các biểu đồ phân phối khác nhau nếu bạn thay đổi hoàn toàn các giá trị cho n và p

(Đề nghị đọc. Julia đấu với Python)

Tạo mẫu ngẫu nhiên từ phân phối poisson

Phân phối Poisson là một trong những phân phối quan trọng trong thống kê và thường được gọi là phân phối của các sự kiện hiếm gặp. Phân phối này phù hợp với mô hình số lượng sự kiện xảy ra trong một khoảng thời gian nhất định.  

Chúng tôi có chất độc. phương thức rvs() từ scipy. mô-đun thống kê cho phép chúng tôi tạo mẫu ngẫu nhiên Poisson. Phương pháp này lấy tốc độ xảy ra sự kiện trung bình (mu) tại một thời điểm nhất định, vì kích thước thông thường mô tả số lượng biến ngẫu nhiên có thể được nắm bắt thông qua phân phối

Hãy để chúng tôi xem cách vẽ và vẽ một mẫu ngẫu nhiên từ phân phối Poisson trong python


#importing the poisson module from scipy.stats in python environment

from scipy.stats import poisson



#importing pyplot module as plt from matplotlib in python environment

import matplotlib.pyplot as plt



#Generating a random sample of size 10000 from poisson distribution with mean 4

pois_rnd_sample = poisson.rvs(mu = 4, size = 10000)



#Plotting the distribution using plt.hist method

plt.hist(pois_rnd_sample, bins = 50)

Ở đây, chúng tôi đang tạo một mẫu gồm 10.000 biến ngẫu nhiên poisson với giá trị trung bình là 4 và vẽ các điểm đó để xem liệu mẫu này có tuân theo các thuộc tính poisson hay không. Xem biểu đồ bên dưới


Python ngẫu nhiên với xác suất

Một âm mưu 10.000 Poisson ngẫu nhiên biến đổi với giá trị trung bình 4


Tạo mẫu ngẫu nhiên từ phân phối bình thường

Chà, chúng ta có thể sử dụng mô-đun ngẫu nhiên tiêu chuẩn để tạo một mẫu ngẫu nhiên từ phân phối chuẩn. Chúng tôi có một hàm gọi là normalvariate(). Để tạo một mẫu ngẫu nhiên từ phân phối chuẩn, bắt buộc phải cung cấp giá trị trung bình (mu) và độ lệch chuẩn (sigma) trong hàm normalvariate().  

Hãy để chúng tôi tạo một mẫu ngẫu nhiên có kích thước 5 với giá trị trung bình bằng 0 và độ lệch chuẩn 5. Xem mã dưới đây


#Importing python module random to generate random numbers

import random as rnd



#Generating a random sample of 5 from normal distribution

for i in range(5):

    rnd_norm = rnd.normalvariate(mu = 0, sigma = 5)

    print(rnd_norm)

Đầu ra như hình bên dưới


Python ngẫu nhiên với xác suất

Mẫu ngẫu nhiên của 5 từ phân phối bình thường với giá trị trung bình 0 và độ lệch chuẩn 5


Thật thú vị, chúng ta cũng có thể lấy một mẫu ngẫu nhiên bình thường thông qua scipy. mô-đun thống kê. Mô-đun có định mức. phương thức rvs() cho phép chúng ta tạo một mẫu ngẫu nhiên từ phân phối chuẩn. Nó có tham số loc chỉ định giá trị trung bình và tham số tỷ lệ chỉ định sigma/độ lệch chuẩn. Hãy để chúng tôi tạo một mẫu ngẫu nhiên có kích thước 10.000 và vẽ nó. Mã như dưới đây

#importing the norm module from scipy.stats in python environment

from scipy.stats import norm



#importing pyplot module as plt from matplotlib in python environment

import matplotlib.pyplot as plt



#Generating a random sample of size 10000 from binomial distribution with n = 12 and p = 0.6

normal_rnd_sample = norm.rvs(loc = 0, scale = 5, size = 10000)



#Plotting the distribution using plt.hist method

plt.hist(normal_rnd_sample, bins = 50)

Biểu đồ đầu ra của mã này như hình dưới đây


Python ngẫu nhiên với xác suất

Vẽ mẫu bình thường ngẫu nhiên gồm 10.000 điểm với giá trị trung bình 0 và sigma 5


Đây là tất cả những gì chúng tôi có cho bạn trong bài viết này. Nếu bạn chưa xem bài viết của chúng tôi về cách làm việc với các đối tượng JSON của python, bạn có thể đọc nó tại đây Làm việc với các đối tượng JSON của Python. Kết thúc bài viết này với một số điểm tóm tắt cho bạn

Bản tóm tắt

  1. các scipy. mô-đun thống kê từ python là một nguồn phong phú với hầu hết các chức năng thống kê có trong đó. Chúng ta có thể sử dụng cùng một mô-đun để tạo các mẫu ngẫu nhiên từ các phân phối thống kê khác nhau (cả liên tục và rời rạc)

  2. nhị phân. phương thức rvs() từ scipy. mô-đun stat được sử dụng để tạo một mẫu ngẫu nhiên có kích thước bất kỳ từ phân phối nhị thức

  3. chất độc. phương thức rvs() từ scipy. mô-đun thống kê được sử dụng để tạo một mẫu ngẫu nhiên có kích thước bất kỳ từ phân phối poisson

  4. Phương thức normalvariate() từ mô-đun ngẫu nhiên có thể được sử dụng để tạo một mẫu ngẫu nhiên có kích thước bất kỳ từ Phân phối chuẩn

  5. định mức. phương thức rvs() từ scipy. mô-đun thống kê có thể được sử dụng để tạo một mẫu ngẫu nhiên có kích thước bất kỳ từ Phân phối chuẩn

    Làm cách nào để tạo số ngẫu nhiên có xác suất bằng nhau trong Python?

    hàm randint sẽ luôn tạo ra các số có xác suất bằng nhau cho mỗi số trong phạm vi. Điều này có nghĩa là xác suất nhận được bất kỳ số cụ thể nào khi chạy ngẫu nhiên. randint(1, 10) chỉ là 10% -- vì mỗi số trong số 1-10 đều có 10% khả năng xuất hiện.

    Làm cách nào để tính xác suất trong Python?

    Để tính xác suất này, bạn chia số kết quả sự kiện có thể xảy ra cho không gian mẫu . Điều này có nghĩa là trước tiên bạn phải xem xét có bao nhiêu cách để đồng xu có mặt sấp và số lượng các kết quả có thể xảy ra.