You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求教:如何在X轴添加实际价格并绘制实价vs预测价图

解决实际价格vs预测价格的对比图绘制问题

嘿,别慌!作为Python新手,能想到用可视化来验证预测结果已经很棒啦~你现在的代码是用Id做X轴画价格走势,而你需要的是实际价格做X轴、预测价格做Y轴的散点对比图,我来一步步教你改:

核心思路

我们需要把实际价格和对应的预测价格一一对应起来,用散点图展示它们的关系,再加上一条y=x的参考线——如果预测完全准确,所有点都会落在这条线上,偏离越远说明预测误差越大。

具体步骤&代码

第一步:确保数据对应(关键!)

首先要保证你的实际价格数据(df_tr)和预测价格数据(df_pred)是按相同顺序排列的(比如都按Id排序),或者通过合并数据框来对齐:

import pandas as pd

# 合并实际和预测数据,用Id做匹配,给列名加后缀区分
merged_df = pd.merge(df_tr[['Id', 'SalePrice']], df_pred[['Id', 'SalePrice']], 
                     on='Id', suffixes=('_actual', '_predicted'))

第二步:绘制对比散点图

替换你原来的绘图代码,用plt.scatter来画:

import matplotlib.pyplot as plt

# 绘制实际价格(X轴) vs 预测价格(Y轴)的散点图
plt.scatter(merged_df['SalePrice_actual'], merged_df['SalePrice_predicted'], 
            color='blue', alpha=0.6)  # alpha设0.6让重叠点更清晰

# 添加y=x参考线,方便直观对比
plt.plot([merged_df['SalePrice_actual'].min(), merged_df['SalePrice_actual'].max()], 
         [merged_df['SalePrice_actual'].min(), merged_df['SalePrice_actual'].max()], 
         color='red', linestyle='--')

# 设置图表细节
plt.title('Predicted vs Actual Sale Prices')
plt.xlabel('Actual Sale Price')
plt.ylabel('Predicted Sale Price')

# 显示图形
plt.show()

简化版(如果数据已经对齐)

如果你确定df_tr和df_pred的行顺序完全对应(比如都按Id排好序了),也可以直接跳过合并,直接用两列数据绘图:

plt.scatter(df_tr['SalePrice'], df_pred['SalePrice'], color='blue', alpha=0.6)
plt.plot([df_tr['SalePrice'].min(), df_tr['SalePrice'].max()], 
         [df_tr['SalePrice'].min(), df_tr['SalePrice'].max()], 
         color='red', linestyle='--')
plt.title('Predicted vs Actual Sale Prices')
plt.xlabel('Actual Sale Price')
plt.ylabel('Predicted Sale Price')
plt.show()

小提示

  • 散点图比折线图更适合展示两个变量的对应关系,折线图在这里会显得混乱哦~
  • y=x参考线是关键,能快速帮你判断整体预测的偏差方向。

内容的提问来源于stack exchange,提问作者Lemair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:22:39