如何用Python matplotlib绘制实际值与预测值的对比图
回归实际值-预测值对比图的修正实现
现有代码存在的偏差
- 参考线绘制逻辑错误:原代码使用
plt.plot(range(my_range), range(my_range), 'o')绘制参考对象,输出为沿y=x分布的离散圆点,而非贯穿图面的连续理想拟合对角线 - 坐标范围适配失效:
range(my_range)仅能生成整数步长的坐标点,无法匹配带小数取值的样本数据,同时未预留合理绘图边距,导致数据点挤在图的角落 - 图面可读性缺失:未配置坐标轴标签、图例、网格,无法直观区分样本点和参考线
可直接复用的修正代码
import matplotlib.pyplot as plt import numpy as np def plotGraph(y_test, y_pred, regressorName): # 自适应计算统一坐标范围,预留10%边距避免数据点贴边 axis_min = min(y_test.min(), y_pred.min()) * 0.9 axis_max = max(y_test.max(), y_pred.max()) * 1.1 # 绘制实际值与预测值的样本散点 plt.scatter(y_test, y_pred, color='#c0392b', label='样本点') # 绘制连续的y=x理想参考线 plt.plot([axis_min, axis_max], [axis_min, axis_max], color='#7f8c8d', linestyle='--', label='理想拟合线') # 配置图面展示要素 plt.title(regressorName) plt.xlabel('实际值 Original') plt.ylabel('预测值 Predicted') plt.xlim(axis_min, axis_max) plt.ylim(axis_min, axis_max) plt.legend() plt.grid(alpha=0.3) plt.show()
最终效果说明
- 红色散点为每一组实际值和对应预测值的坐标点,点越贴近灰色虚线参考线,代表模型预测和实际值的偏差越小
- 坐标范围完全适配样本的取值区间,不会出现参考线错位、离散圆点堆砌的问题,和预期绘图效果一致
内容的提问来源于stack exchange,提问作者Jealima
相关产品推荐
相关产品推荐

