回归模型的平均误差无法告诉你错误是否呈系统模式。残差图把“真实值减预测值”与预测值并排观察:若出现弯曲结构、扇形散布或局部偏差,需要回到模型和数据检查。下面用线性模型拟合一个人为构造的非线性关系,在独立教学点上画残差。
环境与运行方法
本文代码在 Windows、Python 3.11 的本地独立环境执行通过。以下数据全部为人为构造的教学样本,不是客户数据,也不是业务效果测试。

新建一个空目录,在终端执行安装命令,把后面的完整代码保存为 demo.py,再执行 python demo.py。文件输出均保存在运行目录,请先在空目录练习。
python -m pip install numpy==2.4.6 scikit-learn==1.9.1 matplotlib==3.11.2
先固定残差的正负定义
本文 residual=y_true-y_pred,正值表示模型低估,负值表示模型高估。图的横轴是预测值、纵轴是残差,水平零线用于判断方向。如果你的团队采用反向定义,应一并改变图注,不能混用。
示例目标由 x²+0.1x 构造,线性模型只有 x 一列,故意漏掉二次项。训练点和展示图的检查点不同,避免仅凭训练残差判断泛化。没有额外噪声,是为了清晰展示未建模曲线,不代表真实数据一定如此。
从模式回到可验证的假设
若中间残差多为负、两边偏正,可能需要检查非线性结构;这只是提示,不是自动证明应该加入二次项。还要核对时间混杂、遗漏变量、目标测量和异常记录。
如果发现可解释的原因,在训练数据上重新设计特征或模型,再用同一预先保留的验证方案比较。不能不断看测试图、反复修改模型后仍把它叫最终独立测试集。
可复制的完整代码
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
X_train = np.array([-3, -2, -1, 1, 2, 3], dtype=float).reshape(-1, 1)
y_train = X_train[:, 0] ** 2 + 0.1 * X_train[:, 0]
X_check = np.array([-2.5, -1.5, -0.5, 0.5, 1.5, 2.5]).reshape(-1, 1)
y_check = X_check[:, 0] ** 2 + 0.1 * X_check[:, 0]
model = LinearRegression().fit(X_train, y_train)
pred = model.predict(X_check); residual = y_check - pred
fig, ax = plt.subplots()
ax.scatter(pred, residual)
ax.axhline(0, color="gray", linestyle="--")
ax.set(xlabel="Prediction", ylabel="Observed - predicted", title="Toy nonlinear residual pattern")
fig.tight_layout(); fig.savefig("residual_pattern.png", dpi=150); plt.close(fig)
print("predictions", pred.round(3).tolist())
print("residuals", residual.round(3).tolist())
print("saved residual_pattern.png")
assert residual[0] > 0 and residual[-1] > 0
assert residual[2] < 0 and residual[3] < 0
运行结果与核对方法
下面是本文教学代码在上述本地环境中的实际输出。浮点数末位可能随依赖版本变化。
predictions [4.417, 4.517, 4.617, 4.717, 4.817, 4.917]
residuals [1.583, -2.417, -4.417, -4.417, -2.417, 1.583]
saved residual_pattern.png
打开 residual_pattern.png,确认纵轴写着 Observed – predicted,图上有零线,中间教学点残差为负、两侧为正;同时核对 residuals 与对应输入。它展示线性模型未覆盖二次关系的模式,下一步用保留的验证方案检验新假设。
使用边界与常见问题
这是故意构造的非线性教学关系,没有代表真实业务残差分布。图形模式只能提出诊断线索,不等于统计假设或因果结论,也不能替代独立评估。
残差都接近零就一定没有问题吗?
不一定。样本过少、数据泄漏或仅查看训练数据也可能让残差很小;仍要核对样本来源、训练与测试隔离和实际预测时点。
官方资料
接口与参数依据以下官方资料核对(2026年10月1日)。示例验证只覆盖本文输入和步骤。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30770.html