用 Python 擲硬幣吧

Python 機率基礎

Alexander A. Ramírez M.

CEO @ Synergy Vision

機率

  • 資料科學基礎
  • 從模型產生資料
  • 研究隨機現象的規律
Python 機率基礎

建立直覺

……用擲硬幣來理解

擲硬幣

Python 機率基礎

只有兩種結果

正面或反面

一分錢的正反面

Python 機率基礎

在 Python 中擲硬幣

Bernoulli 隨機實驗

from scipy.stats import bernoulli
bernoulli.rvs(p=0.5, size=1)
array([0])

再抽一次

bernoulli.rvs(p=0.5, size=1)
array([1])
Python 機率基礎

同時擲多枚硬幣

調整 size 參數可擲更多次……

bernoulli.rvs(p=0.5, size=10)
array([0, 0, 0, 0, 0, 0, 1, 1, 0, 0])

有幾次正面?

sum(bernoulli.rvs(p=0.5, size=10))
5
Python 機率基礎

同時擲多枚硬幣(續)

再抽一次……

sum(bernoulli.rvs(p=0.5, size=10))
2
Python 機率基礎

同時擲多枚硬幣(續)

二項隨機變數

from scipy.stats import binom
binom.rvs(n=10, p=0.5, size=1)
array([7])

多次抽樣

binom.rvs(n=10, p=0.5, size=10)
array([6, 2, 3, 5, 5, 5, 5, 4, 6, 6])
Python 機率基礎

同時擲多枚硬幣(續)

偏幣的抽樣

binom.rvs(n=10, p=0.3, size=10)
array([3, 4, 3, 3, 2, 2, 2, 2, 3, 6])
Python 機率基礎

隨機數種子

  • 使用 rvs() 函式的 random_state 參數
from scipy.stats import binom
binom.rvs(n=10, p=0.5, size=1, random_state=42)
  • 使用 numpy.random.seed()
import numpy as np
np.random.seed(42)
Python 機率基礎

隨機數種子(續)

設好隨機種子後擲 10 枚公平硬幣

from scipy.stats import binom
import numpy as np

np.random.seed(42)
binom.rvs(n=10, p=0.5, size=1)
array([4])
Python 機率基礎

一起來練習吧!

Python 機率基礎

Preparing Video For Download...