大数の法則
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 14/64。
コインを10回投げて表が8回出ても、驚くことではありません。投げ続けると、表の割合はゆっくりと0.5に近づいていきます。
各点には、そこまでの割合が必要です。np.cumsum は累積合計を返します。それを、そこまでのコイントスの回数で割ります。
heads = np.array([True, False, True, True])
print(np.cumsum(heads))
print(np.round(np.cumsum(heads) / np.arange(1, 5), 2))これは次のように出力されます:
[1 1 2 3]
[1. 0.5 0.67 0.75]ax.axhline(y) は、グラフを横切る基準線を描画します。
ax.plot(np.arange(1, 301), share)
ax.axhline(0.5, color="red", linestyle="--")これが大数の法則です。試行回数が増えるほど、確率に近づきます。20個のサンプルで高いスコアを出すモデルは運がよかっただけかもしれませんが、2000個ではそうとは考えにくいでしょう。
チャレンジ
中級シリアルのブランドは、箱の20%におもちゃを隠しています。プログラムは開封される箱の数を読み取り、スターターコードがtoys(おもちゃが入っていればTrue)を設定し、グラフにラベルを付けます。
- おもちゃの割合の累積値を計算します。
- 10箱開封後とすべての箱を開封した後の値を、小数第3位まで出力します。
- 箱の番号を1からとしてその値をプロットし、0.2の位置に黒い点線(
":")を追加して表示します。
ほかの80箱については:
After 10 boxes: 0.1
After 80 boxes: 0.212そして、このグラフを描きます。次にCoddyがあなたのグラフについて説明します。
自分で試してみよう
import numpy as np
import matplotlib.pyplot as plt
boxes = int(input())
# 以下の行は変更しないでください
rng = np.random.default_rng(25)
toys = rng.random(boxes) < 0.2
fig, ax = plt.subplots()
ax.set_title("Toys in Cereal Boxes")
ax.set_xlabel("Boxes opened")
ax.set_ylabel("Share with a toy")
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ