期刊配图:基于机器学习模型预测解释与工程验证的误差可视化分析

机器学习大模型算法

picture.image

✨ 欢迎关注Python机器学习AI ✨

本节介绍: 基于机器学习模型预测解释与工程验证的误差可视化分析 ,数据采用模拟数据无任何现实意义,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。完整数据和代码将在稍后上传至交流群,成员可在交流群中获取下载。需要的朋友可关注公众文末提供的获取方式。文末提供高效的学习工具~!点赞、推荐参与文末包邮赠书!

✨ 论文信息 ✨

picture.image

文献中通过两个部分的可视化展示了基于GBDT机器学习模型对商业活性炭最大Hg⁰去除效率的预测与实际工程验证结果的对比分析

  • d)图为三维响应面图,展示不同BET比表面积及氯(Cl)、溴(Br)掺杂量对最大Hg⁰去除效率的预测影响,结果表明BET比表面积对去除效率的影响显著,而卤素掺杂量影响较弱;
  • e)图为柱状图与散点图结合的形式,比较了6个样品的模型预测效率(蓝色柱状)与实际实验效率(绿色柱状),并标注对应的相对误差(红色星形散点);结果显示,所有样品的预测值与实验值差异较小,且相对误差均在10%以内,平均误差约7%,表明模型具有较高的预测精度和工程适用性

整体可视化清晰展示模型在性能预测中的有效性和可靠性,验证了机器学习方法结合实验数据在工程应用中的实用价值,接下来主要复现图e结合预测值真实值的残差可视化分析

✨ 代码实现 ✨

  
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"2025-12-8公众号Python机器学习AI.xlsx"  
df = pd.read_excel(path)  
from sklearn.model_selection import train_test_split  
# 划分特征和目标变量  
X = df.drop(['SR'], axis=1)  # 从数据集中去掉目标变量 'y',得到特征变量 X  
y = df['SR']  # 提取目标变量 y  
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1212)  
from sklearn.ensemble import GradientBoostingRegressor  
from sklearn.model_selection import cross_val_score  
from sklearn.metrics import mean_squared_error  
  
max_depth_list = list(range(1, 21))  
n_estimators_list = list(range(1, 101))  
  
records = []  
  
for depth in max_depth_list:  
    for n_est in n_estimators_list:  
  
        model = GradientBoostingRegressor(  
            max_depth=depth,  
            n_estimators=n_est,  
            random_state=42  
        )  
  
        scores = cross_val_score(model, X_train, y_train, cv=5, scoring='neg_mean_squared_error')  
        rmse = np.sqrt(-scores.mean())  
  
        records.append([depth, n_est, rmse])  
  
results = pd.DataFrame(records, columns=['max_depth', 'n_estimators', 'RMSE'])  
from sklearn.ensemble import GradientBoostingRegressor  
  
# 从 results 中找到 RMSE 最小的那一行  
best_row = results.loc[results['RMSE'].idxmin()]  
best_depth = int(best_row['max_depth'])  
best_n_estimators = int(best_row['n_estimators'])  
best_rmse = best_row['RMSE']  
  
# 用该最优参数训练最终的 GBDT 模型  
GBDT = GradientBoostingRegressor(  
    max_depth=best_depth,  
    n_estimators=best_n_estimators,  
    random_state=42  
)  
  
GBDT.fit(X_train, y_train)

通过网格搜索和交叉验证,自动寻找GBDT模型的最佳max_depth和n_estimators参数组合,并用该最优参数训练出预测目标变量SR的最终模型,详情参考往期文章——期刊复现:ML模型的超参数优化及模型预测效果可视化配图期刊复现:部分依赖图(PDP)绘制与局部放大插图揭示拐点与特征影响

  
import matplotlib.transforms as mtransforms  
import math  
  
def build_prediction_df(model, X_subset, y_subset):  
    """  
    构建用于可视化的对比数据框  
    :param model: 训练好的模型 (如 GBDT)  
    :param X_subset: 测试集特征 (如 X_test.head())  
    :param y_subset: 测试集真实标签 (如 y_test)  
    :return: 规范的 DataFrame  
    """  
    # 1. 确保真实值的索引与特征集对齐  
    # 假设 y_test 是 Series,如果是 numpy array 需要确保顺序一致  
    if isinstance(y_subset, (pd.Series, pd.DataFrame)):  
        y_true_aligned = y_subset.loc[X_subset.index].values.flatten()  
    else:  
        y_true_aligned = y_subset[:len(X_subset)] # 简单的切片兜底  
  
    # 模型预测  
    y_pred = model.predict(X_subset)  
    data = {  
        # 将索引转为字符串,并添加 LaTeX 风格的上标 # 号  
        'Label': [f"{idx}$^{{\#}}$" for idx in X_subset.index],  
        'Predicted': y_pred,  
        'Actual': y_true_aligned  
    }  
  
    viz_df = pd.DataFrame(data)  
    # 计算相对误差 (%)  
    viz_df['Relative_Error'] = abs(viz_df['Predicted'] - viz_df['Actual']) / viz_df['Actual'] * 100  
  
    return viz_df  
  
  
target_samples = X_test.head(5)  
prediction_comparison_df = build_prediction_df(GBDT, target_samples, y_test)  
prediction_comparison_df

picture.image

这是为了验证所构建的GBDT模型是否能够准确反映工程实际,本部分文献中选用的是真实数据,基于这些实际的实验数据,文献利用训练好的GBDT模型对最大Hg⁰去除效率进行了预测,这这里借鉴文献思路,选取模拟数据集中测试集的前5个样本作为代表(实际运用中读者也可以保留几个单独的真实样本来进行验证),利用训练好的GBDT模型进行预测对比分析,构建包含预测值、真实值及相对误差的对比数据框,实现对文献方法的模拟复现,验证模型在模拟环境下的基本准确性和可行性

picture.image

可视化结果展示了GBDT模型对测试样本的预测值与实际值对比,尽管部分样本存在较大相对误差,但整体趋势基本一致,表明模型在模拟数据上的预测具有一定参考价值

  
import shap  
explainer = shap.TreeExplainer(GBDT)  
shap_values = explainer.shap_values(X_test.head())  
plt.figure(figsize=(10, 5))  
shap.force_plot(explainer.expected_value, shap_values[0], X_test.head().iloc[0], feature_names=X_test.columns, matplotlib=True, show=False)  
plt.savefig("样本-249.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.tight_layout()  
plt.show()  
plt.figure(figsize=(10, 5))  
shap.force_plot(explainer.expected_value, shap_values[1], X_test.head().iloc[1], feature_names=X_test.columns, matplotlib=True, show=False)  
plt.savefig("样本-322.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.tight_layout()  
plt.show()  
plt.figure(figsize=(10, 5))  
shap.force_plot(explainer.expected_value, shap_values[2], X_test.head().iloc[2], feature_names=X_test.columns, matplotlib=True, show=False)  
plt.savefig("样本-8.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.tight_layout()  
plt.show()  
plt.figure(figsize=(10, 5))  
shap.force_plot(explainer.expected_value, shap_values[3], X_test.head().iloc[3], feature_names=X_test.columns, matplotlib=True, show=False)  
plt.savefig("样本-215.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.tight_layout()  
plt.show()  
plt.figure(figsize=(10, 5))  
shap.force_plot(explainer.expected_value, shap_values[4], X_test.head().iloc[4], feature_names=X_test.columns, matplotlib=True, show=False)  
plt.savefig("样本-433.pdf", format='pdf', bbox_inches='tight', dpi=1200)  
plt.tight_layout()  
plt.show()

picture.image

基于文献进行扩展,利用训练好的GBDT模型和SHAP解释,对测试集前五个样本逐一生成单样本的特征贡献力图可视化,便于深入理解模型对每个样本预测的具体影响因素,当然实际运用中是 实际的实验数据而不是在测试集上的数据

以第一个样本为例SHAP力图导向图显示了基准值(base value)如何通过各特征的正负贡献(红色增大、蓝色减小)累积影响最终预测值(50.53),其中红色部分特征推动预测值上升,蓝色部分特征推动预测值下降,反映了每个特征对该样本预测结果的具体影响方向和大小

当然,公众号中还有更多机器学习期刊实战技巧,您可以通过历史文章进行检索和阅读,关注公众号,点击“发信息”>“历史文章”即可搜索公众号所有文章信息

picture.image

✨ 该文章案例 ✨

picture.image

在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。

同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。

✨ 介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到公众号后台获取作者的公众号合集。截至目前为止,合集已包含300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用。

更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 获取 前请咨询,避免不必要的问题。

✨ 群友反馈 ✨

picture.image

✨ 合集获取 ✨

picture.image

欢迎到公众号后台,获取更多Python机器学习和AI相关的内容 ,希望能为您的学习之路提供帮助!

✨ 赠书活动 ✨

picture.image

picture.image

支持知识分享,畅享学习乐趣!特别感谢清华大学出版社 对本次赠书活动的鼎力支持!即日起,只需点赞、推荐、转发 此文章,作者将从后台随机抽取一位幸运儿,免费包邮赠送清华出版社提供的《玩转FastGPT:像搭积木一样构建智能体》这本精彩书籍📚!

💡 赶快参与,一键三连,说不定你就是那位幸运读者哦!

✨ AI工具推荐 ✨

picture.image

往期推荐

期刊配图:模型SHAP解释特征类别柱状图、饼图与蜂巢图的组合展示

期刊复现:基于自动机器学习的预测模型构建及其残差和部分依赖分析

期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况最优模型的SHAP解释

期刊复现:单变量特征降维与共线性分析结合RFE集成排名进行特征筛选下的组合拳流程

期刊复现:SVM、RF、BDT、DT、Logit五大模型堆叠31种组合情况优化与最优模型选择可视化

期刊复现:基于相关系数与AUC值优化特征选择剔除冗余特征精简模型(附代码)

期刊复现:如何正确使用LASSO进行二分类特征选择?避开常见误区,掌握实用技巧

期刊复现:融合聚类与多分类转二分类的亚型可解释SHAP机器学习模型构建

期刊复现:基于LightGBM、XGBoost与RF的Lasso回归堆叠模型在连续和分类特征上的模型解释

期刊复现:基于LightGBM、XGBoost与RF的堆叠模型贝叶斯优化调参与Lasso回归元模型,结合10倍交叉验证

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论