均勻分佈
簡介
均勻分佈是一種連續機率分佈,表示在指定範圍內的所有事件具有相等的發生機率。它常用於模擬隨機事件,例如生成隨機數或選擇隨機樣本。
引數
均勻分佈用兩個引數來定義:
a:下限,表示分佈的最小值。
b:上限,表示分佈的最大值。
公式
均勻分佈的機率密度函式 (PDF) 為:
f(x) = 1 / (b - a) for a <= x <= b
其中:
f(x)
:表示在區間 [a, b] 內 x 點的機率密度。
a
:分佈的下限。
b
:分佈的上限。
生成均勻分佈資料
NumPy 提供了 random.uniform()
函式來生成服從均勻分佈的隨機數。該函式接受以下引數:
low
:分佈的下限,預設為 0。
high
:分佈的上限,預設為 1。
size
:輸出陣列的形狀。
示例:生成 10 個介於 0 到 1 之間的均勻分佈隨機數:
import numpy as np
data = np.random.uniform(low=0, high=1, size=10)
print(data)
視覺化均勻分佈
Seaborn 庫提供了便捷的函式來視覺化分佈,包括均勻分佈。
示例:繪製 1000 個介於 0 到 1 之間的均勻分佈隨機數的分佈圖:
import seaborn as sns
import numpy as np
data = np.random.uniform(low=0, high=1, size=1000)
sns.distplot(data)
plt.show()
練習
- 生成 500 個介於 -10 到 10 之間的均勻分佈隨機數,並繪製它們的分佈圖。
- 比較不同範圍下均勻分佈形狀的變化。
- 利用均勻分佈來模擬 100 次拋硬幣的結果,並計算正面朝上的次數的機率。
解決方案
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
# 1. 生成隨機數並繪製分佈圖
data = np.random.uniform(low=-10, high=10, size=500)
sns.distplot(data)
plt.show()
# 2. 比較不同範圍下分佈形狀的變化
low_values = [-10, 0, 10]
high_values = [10, 20, 30]
for low, high in zip(low_values, high_values):
data = np.random.uniform(low=low, high=high, size=1000)
sns.distplot(data, label=f"[{low},{high}]")
plt.legend()
plt.show()
# 3. 模擬拋硬幣結果並計算正面朝上的次數機率
heads = np.random.uniform(low=0, high=1, size=100) > 0.5
print("正面朝上的次數:", heads.sum())
print("正面朝上的機率:", heads.mean())
邏輯分佈
簡介
邏輯分佈,也稱為Logistic分佈,是一種連續機率分佈,常用於建模具有 S 形增長特徵的現象,例如生物種群增長、疫情發展等。它在機器學習中也具有廣泛的應用,例如邏輯迴歸、神經網路等。
引數
邏輯分佈用兩個引數來定義:
loc:位置引數,表示分佈的中心位置。預設為 0。
scale:尺度引數,控制分佈的平坦程度。較大的尺度引數使分佈更加平坦,兩側尾部更加分散。預設為 1。
公式
邏輯分佈的機率密度函式 (PDF) 為:
f(x) = (scale / (π (1 + (x - loc) / scale)^2)) for all x
其中:
f(x)
:表示在所有實數 x 點的機率密度。
loc
:分佈的位置引數。
scale
:分佈的尺度引數。
生成邏輯分佈資料
NumPy 提供了 random.logistic()
函式來生成服從邏輯分佈的隨機數。該函式接受以下引數:
loc
:位置引數,預設為 0。
scale
:尺度引數,預設為
最後
為了方便其他裝置和平臺的小夥伴觀看往期文章:
微信公眾號搜尋:Let us Coding
,關注後即可獲取最新文章推送
看完如果覺得有幫助,歡迎點贊、收藏、關注