Pythonでコインを投げてみよう

Pythonで学ぶ確率の基礎

Alexander A. Ramírez M.

CEO @ Synergy Vision

確率

  • データサイエンスの基礎
  • モデルからデータを生成できる
  • ランダム現象の規則性を調べる
Pythonで学ぶ確率の基礎

直感を養う

…コイン投げで直感をつかむ

コイン投げ

Pythonで学ぶ確率の基礎

結果は2通りのみ

表か裏か

1セント硬貨の表と裏

Pythonで学ぶ確率の基礎

Pythonでコインを投げる

ベルヌーイ試行

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でコイン投げを練習しよう

Pythonで学ぶ確率の基礎

Preparing Video For Download...