
代码绘制成果展示











代码解释


第一部分

# =========================================================================================# ====================================== 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, #xy_test_pred, #ycolor=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, #x0.05, #ymetrics_text, #文本transform=ax.transAxes, #坐标系ha='right', #水平va='bottom', #垂直fontsize=14, #字体大小linespacing=1.5) #行距

第五部分

#添加子图axins = fig.add_axes([0.22, #x0.62, #y0.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) #平滑曲线Xaxins.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']) #yy = df['CMI_Target'] #xX_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 = True5.设置绘图结果的保存地址,执行部分:
plt.savefig(fr'scheme_{scheme_id}.png', bbox_inches='tight', dpi=300)
推荐


获取方式
