Menu
CoddyTech

正規曲線

CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 9/64。

身長、試験の点数、米袋:多くの測定値は正規分布、つまり釣鐘型の曲線に従って集まります。1台の機械で作られた500袋の場合:

500袋の米の重量を示す密度ヒストグラムと、その上に重ねられたオレンジ色の釣鐘型曲線。破線は曲線の頂点にある平均値1000 gを示し、長さ8 gの矢印は標準偏差、つまり幅を示している

2つの数値で形が決まります。平均値がピークの位置を決め、標準偏差が幅を決めます。科学計算ライブラリのSciPyには、数式が用意されています。

from scipy import stats

ax.hist(bags, bins=16, density=True)
xs = np.linspace(bags.min(), bags.max(), 100)
ax.plot(xs, stats.norm.pdf(xs, bags.mean(), bags.std()))

stats.norm.pdf(x, mean, std)は、xにおける曲線の高さを表し、xは単一の値または配列です。その面積は密度ヒストグラムと同じく1なので、両方を同じグラフに表示できます。

一部のモデルは、おおむね正規分布に従う特徴量を好みます。このグラフはそれを確認します。

challenge icon

チャレンジ

簡単

ボルトの長さは50 mmである必要があります。スターターコードでは、測定した長さ240個をlengthsに格納し、グラフを設定しています。正規曲線と比較しましょう。

  1. 以下のように、平均と標準偏差(np.std)を小数点以下2桁に丸めて出力します。
  2. bins=15で密度ヒストグラムを描きます。
  3. 当てはめた曲線をその上に描きます。最も短いボルトから最も長いボルトまでの100点を使います。
  4. グラフを表示します。

別のバッチの場合:

Fitted curve: mean 49.99 mm, std 0.42 mm

グラフ:

約49~51 mmのボルト180本の密度ヒストグラム。50付近を頂点とする滑らかな釣鐘型曲線が重ねられている

自分で試してみよう

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# 以下の行は変更しないでください
rng = np.random.default_rng(31)
lengths = np.round(rng.normal(50, 0.4, size=240), 2)

fig, ax = plt.subplots()
ax.set_title("Bolt Lengths")
ax.set_xlabel("Length (mm)")
ax.set_ylabel("Density")

# 以下にコードを書いてください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

機械学習のための統計のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ