Menu
CoddyTech

Z 分数

本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 11 课,共 64 课。

一名学生的化学成绩是 78,历史成绩是 85。哪个成绩更好?用各自班级的标准差来衡量每个成绩:

两条数轴按标准差为单位标记。化学,平均分 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 在线编译器