1. Phân phối chuẩn trong Numpy

Phân phối Chuẩn là một trong những phân phối quan trọng nhất. Nó còn được gọi là Phân phối “Gauss” theo tên nhà toán học người Đức Carl Friedrich Gauss. Nó phù hợp với phân phối xác suất của nhiều sự kiện, ví dụ: Điểm IQ, Nhịp tim, v.v.

Trong Numpy, để tạo ra mảng dựa theo phân phối chuẩn ta sẽ cần sử dụng hàm random.normal() – hàm này yêu cầu 3 tham số:

  • Tham số loc – là giá trị trung bình của phân phối
  • Tham số scale – là độ lệch chuẩn
  • Tham số size  – là kích thước mảng cần trả về

Ví dụ dưới đây, sử dụng hàm random.normal() để tạo ra một mảng với các giá trị theo phân phối chuẩn có kích thước 2×3 với giá trị trung bình bằng 1 (nghĩa là loc = 1) và độ lệch chuẩn là 2 (nghĩa là scale = 2) như sau:

from numpy import random

x = random.normal(loc=1, scale=2, size=(2, 3))

print(x)

Kết quả:

[[-0.51986419 -2.06596489  4.29892876]
 [ 1.15908219  3.56533602  3.09594279]]

Nếu bạn không truyền vào tham số loc và tham số scale vào hàm random.normal() thì một mảng mới với kích thước được chỉ định vẫn sẽ được tạo ra theo phân phối chuẩn ngẫu nhiên.

Ví dụ sử dụng hàm random.normal() để tạo ra một mảng với các giá trị theo phân phối chuẩn ngẫu nhiên và trả về một mảng 2 chiều với  kích thước là 2 x 3 như sau:

from numpy import random

x = random.normal(size=(2, 3))

print(x)

Kết quả:

[[ 0.50033066 -0.65217485 -0.33589849]
 [-0.8130228  -1.05947815 -1.67913971]]

2. Trực quan hóa phân phối chuẩn

Chúng ta có thể trực quan hóa các phân phối chuẩn thông qua hàm sns.distplot() trong mô-đun Seaborn

Ví dụ dưới đây, trực quan hóa phân phối chuẩn có giá trị trung bình bằng 1 và độ lệch chuẩn bằng 2 thông qua hàm sns.distplot() như sau:
import matplotlib.pyplot as plt 
import seaborn as sns
from numpy import random

x = random.normal(loc=1, scale=2, size=(2, 3))

sns.distplot(x, hist=False)

plt.show()

Ví dụ tiếp theo, trực quan hóa phân phối chuẩn ngẫu nhiên bằng hàm sns.distplot() như sau:

import matplotlib.pyplot as plt 
import seaborn as sns
from numpy import random

x = random.normal(size=(2, 3))

sns.distplot(x, hist=True)

plt.show()