分散と標準偏差
CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 3/64。
.std()は平均からの典型的な距離です。ここでは、5杯のエスプレッソについて手作業で計算します:
平均値との差はそれぞれ偏差です。合計すると0になるため、二乗してから平均を求めます。これが分散です。
shots = np.array([24, 27, 25, 30, 24])
deviations = shots - shots.mean()
variance = (deviations ** 2).mean()
print(deviations)
print(variance, np.round(np.sqrt(variance), 2))これは次のように出力します。
[-2. 1. -1. 4. -2.]
5.2 2.28その平方根である標準偏差は、秒の二乗を秒に戻します:2.28。np.var(a)とnp.std(a)を使えば、それぞれ1回の呼び出しで計算できます。
標準偏差が0の特徴量は決して変化しないため、モデルに何も情報を与えません。
チャレンジ
簡単品質管理では、機械がジュースのボトルにどれだけ均等に充填するかを確認します。スターターコードは6つの容量(ml)を読み取り、spread_by_hand(a)が返す値をnp.stdと並べて出力します。この関数を完成させ、次の値を返すようにしてください。
- 分散:
aの平均からの偏差を二乗した値の平均、 - 標準偏差:その平方根。
容量が1004、996、1011、993、1002、998の場合:
Variance: 34.56 ml squared
Std: 5.88 ml
Same as np.std: True自分で試してみよう
import numpy as np
values = []
for i in range(6):
values.append(int(input()))
volumes = np.array(values)
# 配列 a の分散と標準偏差を返す
def spread_by_hand(a):
# ここにコードを書き、0, 0 の代わりに2つの値を返す
return 0, 0
# 以下の行は変更しないでください
variance, std = spread_by_hand(volumes)
print(f"Variance: {np.round(variance, 2)} ml squared")
print(f"Std: {np.round(std, 2)} ml")
print("Same as np.std:", np.round(std, 2) == np.round(np.std(volumes), 2))
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
機械学習のための統計のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ