残差
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 35 课,共 64 课。
这一章会用趋势线穿过数据点,并用它进行预测和评估。接下来会学到这些内容:
一条直线拟合得有多好?一家草坪服务公司估算每项工作需要 4.5 * area + 5 分钟。每个红色间隔都是一个残差:实际值减去预测值。
将它们平方后求和,得到直线的评分:
area = np.array([4, 6, 9, 12, 15])
minutes = np.array([29, 27, 49, 52, 76])
residuals = minutes - (4.5 * area + 5)
print(residuals)
print((residuals ** 2).sum())这会打印:
[ 6. -5. 3.5 -7. 3.5]
134.5平方可以避免 +6 和 -6 相互抵消。残差平方和越小,直线就越好。模型通过减小它来学习。
挑战
中等搬家公司根据箱子数量估算搬家所需的时间。boxes 和 hours 保存了过去 8 次搬家的数据,程序会读取两条猜测的直线:slope1、intercept1,然后是 slope2、intercept2。
- 计算每条直线的残差平方和,作为评分。
- 按照下方示例,打印两个总和,四舍五入到小数点后 2 位,并打印较好的直线。
对于直线 0.16 * boxes + 0.8 和 0.12 * boxes + 2.5:
Line 1 SSR: 0.57
Line 2 SSR: 4.1
Better: line 1亲手试试
import numpy as np
boxes = np.array([10, 18, 25, 32, 40, 47, 55, 60])
hours = np.array([2.5, 3.5, 5.0, 5.5, 7.0, 8.0, 9.5, 10.0])
slope1 = float(input())
intercept1 = float(input())
slope2 = float(input())
intercept2 = float(input())
# 在下面编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器