サイコロの目の合計
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 15/64。
2個のサイコロを振って目の数を足すと、7が出る確率は2の6倍です。目の組み合わせを数えてみましょう。
シミュレーションでも同じ結果になります。サイコロの出目を1回ずつ足し合わせてから、合計ごとに数えます。value_countsは、最も多いものから順に表示します。
rng = np.random.default_rng(2)
first = rng.integers(1, 7, size=3600)
second = rng.integers(1, 7, size=3600)
counts = pd.Series(first + second).value_counts()
print(counts.head(3))これは次のように出力されます:
7 605
6 522
8 443
Name: count, dtype: int64ax.bar(counts.index, counts) はテント全体を描画します。
このような棒グラフを見ると、各ラベルを初めて確認できます。出現頻度の低い値は、モデルがほとんど学習できない値です。
チャレンジ
中級ロールプレイングゲームでは、ダメージはそれぞれ1〜4の4面ダイス2個の合計です。プログラムは攻撃回数を読み取り、スターターコードは出目をfirstとsecondに格納し、グラフにラベルを付けます。
- ダメージの合計ごとに数えます。
- 最も起こりやすいダメージと、攻撃回数に占める割合を小数点以下3桁で出力します。
- 合計ごとの回数を棒グラフで描画し、表示します。
攻撃回数が16回の場合、信頼するには少なすぎます。
Most likely damage: 6, share 0.312その後、Coddyがグラフについて説明します。攻撃回数を増やすと、ピークが落ち着きます。
自分で試してみよう
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
rolls = int(input())
# 以下の行は変更しないでください
rng = np.random.default_rng(4)
first = rng.integers(1, 5, size=rolls)
second = rng.integers(1, 5, size=rolls)
fig, ax = plt.subplots()
ax.set_title("Damage Rolls")
ax.set_xlabel("Damage")
ax.set_ylabel("Rolls")
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ