从模型构建到在线部署:基于Stacking集成模型的全流程实现与SHAP可视化

图片

背景

在机器学习和数据科学领域,构建高效的预测模型只是第一步,如何将模型成果落地应用至关重要,借助在线部署工具,可以实现模型的实时预测与可视化交互,为用户提供直观的分析支持。本次实践以Stacking回归模型为核心,结合SHAP值分析特征重要性,并通过Streamlit搭建交互式Web应用关注微信公众号:Python机器学习AI

图片

代码实现

模型构建


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
import warnings
warnings.filterwarnings("ignore")

plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['axes.unicode_minus'] = False
df = pd.read_excel('2024-11-27公众号Python机器学习AI.xlsx')

from sklearn.model_selection import train_test_split, KFold

X = df.drop(['Y'],axis=1)
y = df['Y']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, 
                                                    random_state=42)
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor, AdaBoostRegressor, StackingRegressor
from xgboost import XGBRegressor
from lightgbm import LGBMRegressor
from catboost import CatBoostRegressor
from sklearn.linear_model import LinearRegression

# 定义一级学习器
base_learners = [
    ("RF", RandomForestRegressor(n_estimators=100, random_state=42)),
    ("XGB", XGBRegressor(n_estimators=100, random_state=42, verbosity=0)),
    ("LGBM", LGBMRegressor(n_estimators=100, random_state=42, verbose=-1)),
    ("GBM", GradientBoostingRegressor(n_estimators=100, random_state=42)),
    ("AdaBoost", AdaBoostRegressor(n_estimators=100, random_state=42)),
    ("CatBoost", CatBoostRegressor(n_estimators=100, random_state=42, verbose=0))  
]

# 定义二级学习器
meta_model = LinearRegression()

# 创建Stacking回归器
stacking_regressor = StackingRegressor(estimators=base_learners, final_estimator=meta_model, cv=5)

# 训练模型
stacking_regressor.fit(X_train, y_train)

图片

通过Stacking回归器结合多个基学习器(如随机森林、XGBoost等)和线性回归元学习器,构建了一个集成学习模型并完成训练,用于提升预测性能,详情参考——从入门到实践:如何利用Stacking集成多种机器学习算法提高模型性能

模型保存


import joblib
joblib.dump(stacking_regressor, "stacking_regressor_model.pkl")

将训练好的Stacking回归模型保存为文件 stacking_regressor_model.pkl,以便后续加载和使用,无需重复训练,提升效率和便捷性

SHAP部分

图片

图片

图片

逐步拆解Stacking结构,分别解释基学习器和元学习器的行为,将Stacking模型视为整体的“黑箱”进行解释(仅关注输入特征与最终预测输出的关系),详情参考文章——如何用SHAP解读集成学习Stacking中的基学习器和元学习器以及整体模型贡献

APP部署

图片

这些文件是为利用Streamlit进行APP部署而准备的,每个文件的作用如下:

  • APP.py:主程序文件,包含了Streamlit应用的代码逻辑,用于构建交互式Web界面

  • requirements.txt:依赖文件,列出了应用运行所需的Python库及其版本,方便部署环境的快速搭建

  • stacking_regressor_model.pkl:保存的Stacking模型文件,用于加载模型进行预测,无需重新训练

  • summary_plot.png:基学习器的SHAP特征贡献分析图,展示第一层学习器的特征重要性

  • SHAP Contribution Analysis for the...png:元学习器的SHAP特征贡献分析图,展示二级学习器的特征重要性

  • Based on the overall feature contribution...png:整体Stacking模型的SHAP特征贡献分析图,用于在应用中可视化显示

接下来将所有文件上传至GitHub仓库

图片

将代码和相关文件上传至GitHub,然后在 Streamlit Cloud 部署APP,通过生成的公开URL实现在线实时运行与分享

图片

代码与数据集获取:如需获取本文的源代码和数据集,请添加作者微信联系

APP简介

图片

图片

图片

这个APP利用Streamlit框架实现了一个交互式工具,支持用户通过输入特征值对Stacking模型进行实时预测,同时结合SHAP(SHapley Additive exPlanations)分析,提供了模型的多层次特征贡献可视化。用户可以查看第一层基学习器(如随机森林、XGBoost等)、第二层元学习器(线性回归)的特征重要性分析,以及整个Stacking模型的整体特征贡献。这一工具不仅实现了预测功能,还直观展示了模型的解释性分析,帮助用户理解特征对模型预测结果的影响,代码与数据集获取:如需获取本文的源代码和数据集,请添加作者微信联系

往期推荐

SCI图表复现:整合数据分布与相关系数的高级可视化策略

SCI图表:基于相关性和标准差的多模型评价——泰勒图解析

期刊文章配图:基于分组折线图的多机器学习模型表现评估对比

复现SCI文章 SHAP 依赖图可视化以增强机器学习模型的可解释性

SCI图表复现:优化SHAP特征贡献图展示更多模型细节

复现 Nature 图表——基于PCA的高维数据降维与可视化实践及其扩展

复现Nature图表——基于PCA降维与模型预测概率的分类效果可视化

SCI图表复现:特征相关性气泡热图展示

一图胜千言:回归预测模型训练集与测试集的进阶可视化

期刊文章配图:基于雷达图的多机器学习模型表现评估对比

期刊文章配图:斯皮尔曼相关系数热图反应非线性变量相关性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python机器学习AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值