1. Phân phối Logistic trong Numpy

Phân phối Logistic (hay còn gọi là “phân phối hậu cần”) được sử dụng để mô tả sự tăng trưởng. Ngoài ra, chúng còn thường được sử dụng trong các vấn đề liên quan đến các lĩnh vực như:  học máy, hồi quy logistic, mạng nơ ron nhân tạo….

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

  • Tham số loc – là mean của phân phối. Mặc định 0
  • Tham số scale – là độ lệch chuẩn, độ phẳng của phân phối. Mặc định 1
  • 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.logistic() để tạo ra một mảng 2 chiều có kích thước 2 x 3, các giá trị theo phân phối Logistic với mean = 1scale = 2 (nghĩa là độ lệch chuẩn bằng 2).

from numpy import random

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

print(x)

Kết quả:

[[ 4.28762355 2.21449736 -0.42446481]
[-1.75014238 0.41830426 6.51180738]]

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

Chúng ta có thể trực quan hóa các phân phối Logistic 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 đều trong mảng 1 chiều có kích thước 1 x 1000 có giá trị mean = 0  (mặc định nếu không truyền vào tham số) và độ lệch chuẩn bằng 1 (mặc định không truyền vào tham số) thông qua hàm sns.distplot() như sau:

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

sns.distplot(random.logistic(size=1000), hist=False)
plt.show()

3. Sự khác biệt giữa phân phối chuẩn và Logistic

Phân phối chuẩn và phân phối Logistic, cả hai cách phân phối gần như là giống hệt nhau, nhưng phân phối Logistic sẽ có nhiều diện tích hơn ở phần dưới đuôi. Nó thể hiện nhiều khả năng xảy ra một sự kiện hơn so với giá trị trung bình. Tuy nhiên, đối với giá trị  cao hơn của thang đo (hay độ lệch chuẩn), phân bố chuẩn và phân phối Logistic gần giống nhau ngoài đỉnh.

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

sns.distplot(random.normal(scale=2, size=1000), hist=False, label='normal')
sns.distplot(random.logistic(size=1000), hist=False, label='logistic')
plt.show()