乱数
CoddyのMachine Learningジャーニー「データとプロット」セクションの一部。レッスン 18/60。
シミュレーション、シャッフルされたデータ、未訓練のモデルは、どれも乱数から始まります。この1,000個の架空の身長は、1行で生成しました:
NumPyはシードによって開始された乱数生成器からそれらを生成します。
rng = np.random.default_rng(42)
heights = rng.normal(170, 10, size=1000)
print(np.round(heights[:4], 1))
print(rng.integers(1, 7, size=5))
print(np.round(rng.random(3), 2))これは次のように出力されます:
[173. 159.6 177.5 179.4]
[2 4 3 3 5]
[0.44 0.13 0.09]normal(mean, std, size)は平均値の周りに集まります。integersはrangeと同様にstop値を含みません。randomは0から1までの小数を返します。
同じシードを使えば、どのコンピューターでも同じ数値が得られるので、誰でもあなたの実験を再現できます。抽選するたびに、生成器の状態が進みます。
チャレンジ
簡単ある店が、再実行時に再現しなければならない1週間をシミュレートします。
- シードから
rng_aを作成し、顧客数を7回、20から60まで(両端を含む)抽出してから、平均15、標準偏差4の正規分布から支出額を7回抽出します。 - 同じシードで
rng_bから、またシードに1を加えた値でrng_cから、顧客数をもう一度抽出します。 - 以下のように出力します。支出額は小数第1位まで表示し、bとcがaと一致する日数を出力します。
シードが12の場合:
Customers: [45 30 59 58 22 27 28]
Spend: [21.5 10.2 12.5 9.7 14.6 19. 14.9]
Same seed, days that match: 7
Seed + 1, days that match: 1自分で試してみよう
import numpy as np
seed = int(input())
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
データとプロットのすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ