正态曲线
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 9 课,共 64 课。
身高、考试成绩、大米袋的重量:许多测量值会呈正态分布,也就是钟形曲线。一台机器生产的 500 袋大米:
两个数字就能画出它:平均值决定峰值的位置,标准差决定宽度。科学计算库 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,就像密度直方图一样,因此两者可以显示在同一张图表上。
有些模型更适合大致呈正态分布的特征。这个图表可以检查这一点。
挑战
简单螺栓的长度应为 50 mm。起始代码在 lengths 中存储了 240 个测量长度,并设置好了图表。将它们与正态曲线进行比较:
- 按如下格式打印它们的平均值和标准差(
np.std),并四舍五入到 2 位小数。 - 绘制密度直方图,使用
bins=15。 - 在直方图上绘制拟合曲线:从最短的螺栓到最长的螺栓,取 100 个点。
- 显示图表。
对于另一批螺栓:
Fitted curve: mean 49.99 mm, std 0.42 mm图表如下:
亲手试试
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")
# 在下面编写你的代码。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器