当前位置:首页>python>期刊图片复现|Python绘制带有误差分布直方图的回归拟合图

期刊图片复现|Python绘制带有误差分布直方图的回归拟合图

  • 2026-09-04 16:42:40
期刊图片复现|Python绘制带有误差分布直方图的回归拟合图

代码绘制成果展示

论文:Assessing integrated water status in drip-irrigated maize fields using UAV  multispectral data and machine learning algorithms
论文原图
此图为带有误差频率分布直方图的XGBoost回归拟合散点图。主图横轴为实测值,纵轴为预测值,直观对比了模型的预测性能,空心圆圈代表训练集数据,实心圆代表测试集数据,虚线则是表示完美预测的1:1基准线,散点越贴近该线说明预测越准确。图表右下方列出了详细的模型评估指标,包括R2、Bias、RMSE和MAPE等。左上角插入了一个误差分布直方图,通过直方图和正态分布概率密度曲线展示了预测误差的频率分布情况,其中浅红色柱状图和红色曲线对应训练集;浅蓝色柱状图和深蓝色曲线对应的测试集误差分布。
仿图
多种配色

代码解释

第一部分

库的导入以及字体设置
# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import numpy as npimport pandas as pd

第二部分

设置颜色库
# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {    1: ['#D32F2F', '#003366', '#5a8a70', '#ffb3b3', '#a0c4ff'],

第三部分

绘图函数:数据准备与主图散点绘制
# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def plot_advanced_forest_chart(data, scheme_id):    #创建画布    fig, ax = plt.subplots(figsize=(7, 6), dpi=150)    #测试集散点    ax.scatter(y_test_true, #x               y_test_pred, #y               color=c_test_face, #点颜色               s=40, #大小               label='XGBoost (Test)') #图例标签

第四部分

绘图函数:主图坐标轴设置、基准线绘制及图上文本添加
    all_vals = np.concatenate([y_train_true, y_train_pred, y_test_true, y_test_pred]) #全部数据    val_min, val_max = np.min(all_vals), np.max(all_vals) #数据极值    val_margin = (val_max - val_min) * 0.1 #坐标轴边缘间隔    #添加评估指标文本    ax.text(0.95, #x            0.05, #y            metrics_text, #文本            transform=ax.transAxes, #坐标系            ha='right', #水平            va='bottom', #垂直            fontsize=14, #字体大小            linespacing=1.5) #行距

第五部分

绘图函数:添加误差分布直方图子图
    #添加子图    axins = fig.add_axes([0.22, #x                          0.62, #y                          0.28, #宽                          0.25]) #高    counts, _, _ = axins.hist([err_train, err_test], #误差                              bins=bins, #区间边界                              color=[c_train_hist, c_test_hist], #直方图颜色                              edgecolor='black', #边框色                              linewidth=0.8, #边框宽                              alpha=0.9) #透明度

第六部分

绘图函数:绘制直方图概率密度拟合曲线
    x_grid = np.linspace(err_ax_min, err_ax_max, 100) #平滑曲线X axins.set_xlabel('Error', fontsize=12, labelpad=2) #子图X轴标题    axins.set_ylabel('Frequency', fontsize=12, labelpad=2) #子图Y轴标题    #设置子图边框    for spine in axins.spines.values():        spine.set_linewidth(1.2)

第七部分

执行部分:包括数据读取与提取,数据集划分,模型拟合,结果预测,结果评估,打包数据,调用函数绘图
# =========================================================================================# ======================================4.执行部分===========================================# =========================================================================================if __name__ == '__main__':    df = pd.read_excel(r'data.xlsx' ) #读取数据    X = df.drop(columns=['CMI_Target']) #y    y = df['CMI_Target'] #x    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) #划分数据集    model = xgb.XGBRegressor(n_estimators=100, max_depth=3, learning_rate=0.05, random_state=42) #模型    model.fit(X_train, y_train) #拟合    # 预测    y_train_pred = model.predict(X_train)    y_test_pred = model.predict(X_test)

如何应用到你自己的数据

1.设置原始数据的保存路径,执行部分:

df = pd.read_excel(r'F:\公众号素材\20260719-带有误差频率分布直方图的回归拟合图\data.xlsx' )

2.提取数据,执行部分:

X = df.drop(columns=['CMI_Target']) #yy = df['CMI_Target'] #x

3.定义模型,执行部分:

model = xgb.XGBRegressor(n_estimators=100, max_depth=3, learning_rate=0.05, random_state=42) #模型

4.设置是否要进行批量绘图,执行部分:

plot_all = True

5.设置绘图结果的保存地址,执行部分:

plt.savefig(fr'scheme_{scheme_id}.png', bbox_inches='tight', dpi=300)

推荐

期刊图片复现|Python绘制二维偏依赖PDP图
期刊复现|python绘制基于SHAP分析和GAM模型拟合的单特征依赖图
期刊图片复现|python绘制带有渐变颜色shap特征重要性组合图(条形图+蜂巢图)
期刊复现|用Python绘制SHAP特征重要性总览图、依赖图、双特征交互效应SHAP图,解锁XGBoost模型的终极奥秘
期刊图片复现|Python绘制shap重要性蜂巢图+单特征依赖图+交互效应强度气泡图+交互效应依赖图(回归+二分类+分类)

获取方式

公众号中的所有所有的免费代码都已经下架了,都并入到付费部分里了,付费合集代码和数据的购买通道已经开通,全部合集100元,后续将会持续更新,决定购买请后台私信我,注意只会分享练习数据和代码文件,不会提供答疑服务,代码文件中已经包含了每行代码的完整注释,购买前请确保真的需要!!!

最新文章

随机文章