python:绘制回归预测结果真实值和预测值之间的散点密度图

本文作者@_养乐多_分享了如何在Python中改进回归预测的真实值与预测值散点密度图,指出R2大于0.8即为良好拟合。文章包括完整代码和相关参考资料,并强调了对知识产权的重视。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<think>好的,我现在需要帮助用户解决如何使用Python的MatplotlibSeaborn绘制机器学习模型中真实值预测值的散点图。首先,我得回想一下这两个库的基本用法。记得Matplotlib是底层的绘图库,可以高度自定义图表,而Seaborn则是基于Matplotlib的高级接口,图表更美观,默认样式更好看。 用户的需求是在机器学习预测结果中展示真实值预测值的关系,散点图是常用的方式,因为可以直观看出预测值真实值的偏离程度。理想情况下,如果预测完美,所有点应该分布在一条对角线上。所以,我需要指导用户如何生成这样的图表。 首先,可能需要导入必要的库,比如matplotlib.pyplotseaborn。然后,生成数据,这里用户应该已经有真实值y_true预测值y_pred,可能需要用模型预测得到。接着,绘制散点图,用Seaborn的scatterplot函数或者直接用Matplotlib的scatter方法。此外,添加对角线作为参考线,可以帮助观察预测的准确性。 我还需要注意图表的美观性,比如添加标题、坐标轴标签,网格线等。可能还需要调整点的大小、透明度,避免点重叠看不清。如果使用Seaborn,设置主题样式可以更简单,比如用sns.set_style()。另外,可能还需要计算评估指标,如R²分数,并显示在图上,这样更全面。 然后,考虑到用户可能需要不同的样式,比如分训练集测试集,或者添加回归线,这些可以作为扩展方法。比如,使用Seaborn的regplot可以同时绘制散点图回归线,方便查看趋势。 最后,应该提醒用户参考官方文档相关资源,比如MatplotlibSeaborn的官方教程,以及相关书籍,这样他们可以深入学习更多高级技巧。同时,确保代码示例正确,语法无误,特别是LaTeX格式的使用,比如在标签中使用$R^2$来正确显示上标。 可能还需要检查是否有常见的错误,比如数据没有转换为numpy数组或pandas Series,导致绘图出错,或者图表元素覆盖,比如标签重叠等。此外,确保示例代码的连贯性,用户可以直接复制运行,比如先导入库,生成示例数据,再绘图。 总结步骤应该是:导入库、准备数据、创建图表(散点图+对角线)、美化图表(标题、标签、网格等)、显示或保存图表。在扩展部分,可以展示如何用Seaborn的regplot,或者分数据集绘制不同颜色点,添加图例等。同时,强调数据可视化在机器学习模型评估中的重要性,比如快速识别模型偏差、离群点等。</think>### 如何用Python绘制真实值预测值散点图? 以下是使用MatplotlibSeaborn绘制真实值预测值散点图的详细步骤: --- #### **1. 基础方法:Matplotlib实现** ```python import matplotlib.pyplot as plt import numpy as np # 示例数据(替换为你的真实值预测值) y_true = np.random.rand(100) * 100 # 真实值 y_pred = y_true + np.random.normal(0, 5, 100) # 预测值(添加噪声) # 创建画布 plt.figure(figsize=(8, 6)) # 绘制散点图 plt.scatter(y_true, y_pred, alpha=0.6, c='blue', edgecolors='w', s=50) # 添加参考对角线(y=x) plt.plot([0, 100], [0, 100], 'r--', linewidth=2, label="Perfect Prediction") # 美化图表 plt.title("真实值 vs 预测值", fontsize=14) plt.xlabel("真实值", fontsize=12) plt.ylabel("预测值", fontsize=12) plt.grid(True, linestyle='--', alpha=0.6) plt.legend() plt.show() ``` **关键点解释**: - `alpha=0.6`:设置点的透明度,避免重叠覆盖 - `c='blue'`:自定义散点颜色 - `edgecolors='w'`:添加白色边缘提升对比度 - 红色虚线对角线(`y=x`)帮助评估预测偏差 --- #### **2. 进阶方法:Seaborn优化** ```python import seaborn as sns # 设置Seaborn主题 sns.set_style("whitegrid") # 绘制带分布密度回归线的散点图 g = sns.jointplot(x=y_true, y=y_pred, kind="reg", height=7, color="#2ecc71", line_kws={'color': 'red'}, marginal_kws={'color': '#3498db'}) # 添加标注(R²分数) from sklearn.metrics import r2_score r2 = r2_score(y_true, y_pred) g.ax_joint.text(5, 95, f'$R^2 = {r2:.2f}$', fontsize=12) # 设置标签 g.set_axis_labels("真实值", "预测值", fontsize=14) g.fig.suptitle("真实值预测值分布分析", y=1.02) plt.show() ``` **优势**: - 自动添加核密度分布图(边缘直方图) - 内置线性回归拟合线(红色实线) - 显示统计指标$R^2$[^2] --- #### **3. 扩展应用场景** 1. **分数据集可视化**(训练集/测试集): ```python # 假设已有拆分后的数据 plt.scatter(y_train, y_pred_train, label="训练集", alpha=0.5) plt.scatter(y_test, y_pred_test, label="测试集", alpha=0.5) plt.legend() ``` 2. **添加误差带**: ```python sns.regplot(x=y_true, y=y_pred, scatter_kws={'alpha':0.4}, line_kws={'color':'red'}, ci=95) # 95%置信区间 ``` --- #### **4. 工具推荐** - Matplotlib官方文档:[链接](https://matplotlib.org/stable/contents.html) - Seaborn官方教程:[链接](https://seaborn.pydata.org/tutorial.html) - 实战参考书籍:《Python数据可视化:用Matplotlib与Seaborn绘制美观图表》[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_养乐多_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值