✨ 欢迎关注Python机器学习AI ✨
本节介绍: 小样本回归模型误差与残差性能评估可视化分析 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 完整 数据和代码、文献将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。
✨ 文献信息 ✨
这个可视化图展示了四种不同模型(CNN、AM-CNN、CNN-LSTM、AM-CNN-LSTM)估算的作物产量与实际记录的作物产量的比较。每个子图通过颜色映射表示预测误差,其中颜色从蓝色(低误差)到红色(高误差)渐变,反映了预测误差的大小。色条上显示的误差范围最大可达到1400 kg/ha,提供了每种模型在不同产量预测下的误差分布情况, 文献原文获取公众号后台发送0523~
这种通过颜色映射反映预测误差的大小方法非常适合小样本数据,因为点较为分散,误差可以清晰地通过颜色变化呈现;但在样本量增大时,散点可能重叠,这时更适合通过颜色映射反映点的核密度,展示数据点的分布密度可以参考往期文章——期刊配图:不同机器学习方法在目标域测试集上的散点核密度图
本文将通过误差和残差两个方面,复现回归模型的性能可视化。通过计算误差(预测值与真实值的绝对差异)和残差(预测值与真实值的差异),可以深入分析回归模型的预测能力,并通过颜色映射展现模型性能
✨ 基础代码 ✨
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['axes.unicode_minus'] = False
import warnings
# 忽略所有警告
warnings.filterwarnings("ignore")
path = r"seattle_sample_all.xlsx"
df = pd.read_excel(path, index_col=0)
from sklearn.model_selection import train_test_split
# 划分特征和目标变量
X = df.drop(['log_price', 'UTM_X', 'UTM_Y'], axis=1)
y = df['log_price']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
from sklearn.metrics import mean_squared_error, r2_score
from xgboost import XGBRegressor
# 初始化XGBoost回归模型
model = XGBRegressor(n_estimators=500, # 设置迭代次数
max_depth=6, # 树的深度
learning_rate=0.1, # 学习率
objective='reg:squarederror', # 使用平方误差损失函数
verbose=0 # 控制是否显示训练过程
)
# 训练模型
model.fit(X_train, y_train)
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
# 用训练好的模型预测测试集
y_pred_test = model.predict(X_test)
# 计算RMSE (Root Mean Squared Error) 对测试集
rmse_test = mean_squared_error(y_test, y_pred_test, squared=False)
# 计算MAE (Mean Absolute Error) 对测试集
mae_test = mean_absolute_error(y_test, y_pred_test)
# 计算R² (R-squared) 对测试集
r2_test = r2_score(y_test, y_pred_test)
fig, ax = plt.subplots(figsize=(8, 6), dpi=1200) # 创建一个8x6大小的画布
ax.scatter(y_test, y_pred_test, s=30) # 只绘制散点,不使用颜色映射
plot_min = min(y_test.min(), y_pred_test.min()) * 0.95 # 设置X轴最小值
plot_max = max(y_test.max(), y_pred_test.max()) * 1.05 # 设置X轴最大值
ax.set_xlim([plot_min, plot_max]) # 设置X轴范围
ax.set_ylim([plot_min, plot_max]) # 设置Y轴范围
ax.plot([plot_min, plot_max], [plot_min, plot_max], 'k--', linewidth=1, label='y = x line') # 绘制y=x的虚线
ax.set_xlabel('True Value', fontsize=15) # 设置X轴标签
ax.set_ylabel('Predicted Value', fontsize=15) # 设置Y轴标签
ax.grid(True, linestyle='--', linewidth=0.8, color='#DCDCDC') # 设置网格线样式
ax.legend(loc='upper left', fontsize=15, frameon=False) # 设置图例,隐藏图例框
plt.savefig("scatter.pdf", format='pdf', bbox_inches='tight', dpi=1200)
plt.show()
使用XGBoost回归模型对数据集进行训练,并在测试集上进行预测,这是一个最基础的可视化形式,通过绘制真实值与预测值的散点图来展示回归模型的预测效果。该图通过将真实值和预测值在同一坐标系中展示,帮助直观评估模型的拟合情况,特别是通过添加参考线(y=x)来比较预测值与真实值的差距,适用于回归模型性能的初步可视化分析,接下来和文献一样的可视化形式
这个可视化与之前的基础散点图相比,增加了颜色映射,表示真实值和预测值之间的绝对误差,并通过回归线(蓝色实线)、95%预测带(蓝色虚线)以及评估指标(RMSE、MAE和R²)提供了模型拟合情况、误差分布和预测可信度的直观展示,和文献一致
在这个可视化中,颜色映射已经从表示真实值和预测值之间的绝对误差,修改为表示 残差 。残差是预测值与真实值之间的差异,且残差接近于0时表示模型的预测值与真实值越接近。通过颜色从蓝色(负残差)到红色(正残差)展示了残差的分布,从而帮助识别模型在不同预测区间的误差特征。残差越接近0,说明模型在该点的预测越准确
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!
往期推荐
机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学
因果推断:利用EconML实现双重机器学习估计条件平均处理效应 (CATE)
期刊复现:基于XGBoost模型的网页工具SHAP力图解释单样本预测结果
期刊配图:nature cities通过ALE(累积局部效应)解析特征对模型影响
期刊复现:结合因果推断与SHAP可解释性的机器学习实现应用流程
nature communications:基于Light GBM与随机森林结合的多模型特征选择方法
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考