从常数基线到线性模型
目标与命题
命题:复杂度只有相对基线才有意义;同一个平均误差可能隐藏不同失败。实验使用一维房屋面积预测价格,不依赖第三方包。
环境与固定数据
Python 3.10+。训练数据:x=[1,2,3,4]、y=[3,5,7,9];测试数据:x=[5,6]、y=[11,20]。最后一个测试标签故意偏离线性规律,用于误差分析。
步骤
- 常数基线始终预测训练标签均值
6。 - 使用已知线性候选
ŷ=2x+1,不要先引入库。 - 分别计算训练和测试 MAE。
- 打印逐样本误差,不只看均值。
预期与实际解释
线性模型训练误差为 0,但测试 MAE 为 3.5;错误完全来自第二个样本。证据支持“模型捕获了训练数据中的线性规律”,不支持“现实价格只由面积决定”。
失败注入
把测试标签误填成由 2x+1 生成,分数会完美,但这只是目标泄漏。再把训练和测试行随机混合,观察无法代表未来时间切片的问题。记录每次只改变了什么。
常见失败与复现
zip长度不同时会静默截断:先断言输入长度一致。- 只看平均 MAE 会漏掉第二个样本的集中失败:必须打印逐样本误差。
- 此固定例子不是房价模型,只验证评测思路。
脚本不产生文件,无需清理。保存 Python 版本、代码与输出;下一步学习决策树如何从数据中学出规则,把一条线性候选扩展为可以学习分区规则的模型。