Menu
CoddyTech

Zスコア

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

ある生徒の化学の得点は78点、歴史の得点は85点でした。どちらのほうが良いでしょうか?それぞれのクラスの標準偏差で各得点を測りましょう:

標準偏差の刻みで示された2本の数直線。化学は平均70、標準偏差4:得点の78は平均より標準偏差2つ分上。歴史は平均80、標準偏差10:得点の85は平均より標準偏差0.5個分上

その距離がzスコアです。z = (x - mean) / std。化学:(78 - 70) / 4は2.0です。歴史:(85 - 80) / 10は0.5です。78の勝ちです。

配列全体において、負の z は平均を下回ることを意味します:

temps = np.array([12, 15, 9, 18, 16])
print(np.round((temps - temps.mean()) / temps.std(), 2))

これは次のように出力されます:

[-0.63  0.32 -1.58  1.26  0.63]

Zスコアは単位にかかわらず、平均0、標準偏差1という共通の尺度を持ちます。そのため、数値の大きさがどれほど違っていても、モデルでは年齢と所得が同じ重みで扱われます。

challenge icon

チャレンジ

簡単

ゲームセンターのパズルゲームとレーシングゲームでは、スコアの尺度が大きく異なります。puzzleとracingには、それぞれ常連客12人のスコアが格納されています。新規客が両方をプレイしました。プログラムはその人のパズルのスコアを読み取り、次にレーシングのスコアを読み取ります。

  1. 各スコアについて、そのゲーム内でのzスコアを小数点以下2桁に丸めて出力します(.std()を使用)。
  2. どちらの結果がより印象的かを出力します。

入力が790と16900の場合:

Puzzle z: 1.45
Racing z: 2.0
More impressive: Racing

自分で試してみよう

import numpy as np

puzzle = np.array([640, 720, 580, 810, 690, 750, 600, 700, 660, 730, 620, 780])
racing = np.array([12400, 15800, 13900, 11200, 16500, 14100,
                   12800, 15100, 13300, 14700, 12100, 14600])
p = int(input())
r = int(input())

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

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

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

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