✨ 欢迎关注Python机器学习AI ✨
本节介绍: 基于Ridge、Lasso、极端随机树和梯度提升的堆叠模型的应用与模型解释 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码、文献将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。
✨ 文献信息 ✨
文献使用了堆叠模型(stacking model)来构建PFAS吸附预测模型(PSSM)。在进行数据输入之前,文献中对数据进行了归一化处理,使用了最小-最大归一化方法(min-max scaling),然后将数据随机分割为训练集和测试集,其中80%的数据用于模型训练,20%的数据用于测试,该模型采用了两层框架,利用了多种机器学习算法的强度。具体来说,基模型使用了Ridge、Lasso、极端随机树(Extreme Random Trees, ERT)和梯度提升机(Gradient Boosting),通过对输入特征的训练,生成了Kd(PFAS)预测值。然后,这些基模型的输出被合并到一个新的数据集Z中,作为下一层(元模型)的输入。该元模型是一个多层感知器(MLP)网络,优化了基模型的组合方式,以生成最终的预测值
在模型解释方面,文献采用了SHAP值和部分依赖图来评估特征对模型预测结果的影响。SHAP值用来量化每个特征对模型输出的贡献,特别是通过计算不同特征组合下的影响来确保模型的可解释性。部分依赖图则展示了每个输入特征对预测结果的边际影响,帮助理解每个特征如何单独影响Kd(PFAS)的预测值
接下来,将在我们的模拟数据集上应用这种框架进行实验,并最终使用部分依赖图(PDP)、个体条件期望(ICE)对模型的预测结果进行解释
✨ 代码实现 ✨
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-4-22公众号Python机器学习AI.xlsx"
df = pd.read_excel(path)
from sklearn.model_selection import train_test_split
# 划分特征和目标变量
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.preprocessing import MinMaxScaler
# 创建 MinMaxScaler 实例
scaler = MinMaxScaler()
# 用训练集的统计信息对训练集进行归一化
X_train_scaled = scaler.fit_transform(X_train)
# 使用训练集的统计信息对测试集进行归一化
X_test_scaled = scaler.transform(X_test)
X_train_scaled_df = pd.DataFrame(X_train_scaled, columns=X_train.columns)
X_test_scaled_df = pd.DataFrame(X_test_scaled, columns=X_test.columns)
数据集的处理过程:首先对特征数据进行分割为训练集和测试集,然后使用训练集的统计信息对训练集和测试集进行归一化处理。与文献中建议的先进行数据归一化后再分割数据集不同,这里是先分割数据集再进行归一化,且在测试集标准化时使用的是训练集的统计指标。相较于对整体数据集进行标准化再分割数据集,这种方法避免了测试集受到训练集信息的影响,因此通常建议先分割数据集后进行归一化处理
from sklearn.ensemble import RandomForestRegressor, ExtraTreesRegressor, GradientBoostingRegressor, StackingRegressor
from sklearn.linear_model import Ridge
from sklearn.neural_network import MLPRegressor
# 定义一级学习器(基模型)
base_learners = [
("Ridge", Ridge(alpha=1.0)), # Ridge回归,alpha是正则化强度,较大的值会导致模型更简单
("RF", RandomForestRegressor(n_estimators=100, random_state=42)), # 随机森林,n_estimators是树的数量,random_state用于确保结果可复现
("ExtraTrees", ExtraTreesRegressor(n_estimators=100, random_state=42)), # 极端随机树,n_estimators是树的数量,random_state用于结果复现
("GBM", GradientBoostingRegressor(n_estimators=100, random_state=42)) # 梯度提升树,n_estimators是迭代次数(树的数量)
]
# 定义二级学习器(元模型),使用多层感知机(MLP)
meta_model = MLPRegressor(
hidden_layer_sizes=(100,), # 隐藏层的结构,这里有100个神经元,可以根据需求调整,增加层数或神经元可以提高模型复杂度
max_iter=1000, # 最大迭代次数,表示训练时最大允许的迭代次数,较大的迭代次数可以增加收敛的机会
random_state=42 # 随机种子,确保结果复现
)
# 创建 StackingRegressor 集成模型
stacking_model = StackingRegressor(
estimators=base_learners, # 基学习器的集合
final_estimator=meta_model # 元学习器,使用MLP作为最终的模型
)
# 训练模型
stacking_model.fit(X_train_scaled, y_train)
定义了一个堆叠回归模型(StackingRegressor),使用了四个基学习器(Ridge回归、随机森林、极端随机树和梯度提升回归),并通过多层感知机(MLP)作为元学习器对基学习器的预测结果进行融合。接着,使用训练集对堆叠模型进行了训练,当然可以对模型进行相关的优化,建议优化方向包括:
- 基学习器的参数优化:例如,可以通过网格搜索(GridSearchCV)或随机搜索(RandomizedSearchCV)来调整基学习器(如随机森林、极端随机树和梯度提升回归)的超参数,如树的数量(n_estimators)、最大深度(max_depth)等
- 元模型的优化:多层感知机(MLP)的隐藏层结构和迭代次数可以进一步调整,尝试不同的层数、神经元数量、学习率等,优化模型的表现
- 增加特征选择:通过特征选择或降维方法来减少冗余特征,提高模型的训练效率和预测准确度
为堆叠模型的训练集和测试集进行可视化,展示了模型在这两个数据集上的表现,包括散点图、模型评估指标(RMSE和MAE)、残差图等,帮助直观地反馈模型的预测效果及其误差分布,可视化解读参考往期文章——期刊配图:回归预测模型性能与残差分布可视化分析
# 调用函数,绘制所有特征,指定配色
plot_partial_dependence_subplot(stacking_model, X_train, X_test_scaled_df,
features=X_test_scaled_df.columns.tolist(),
cols=3, line_color='blue', rug_color='gray', individual_color='green')
这段代码调用自定义plot_partial_dependence_subplot,绘制堆叠模型(stacking_model)在测试集(X_test_scaled_df)上的部分依赖图(PDP)和个体条件期望图(ICE),通过设置参数来调整特征展示方式、配色等。其中,features 参数指定了绘制的特征,cols=3 控制每行显示的特征数,line_color='blue' 设置依赖线的颜色为蓝色,rug_color='gray' 设置条形图的颜色为灰色,individual_color='green' 设置每个样本的单独显示颜色为绿色,详情参考往期文章——期刊配图:模型解释PDP可视化进阶置信区间+拟合曲线
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含200多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!
往期推荐
Frontiers in Oncology:利用生存机器学习RSF模型预测患者预后模拟实现
期刊配图:通过SHAP组图解读模型探索不同类型特征和分组对模型的影响
机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学
Psychiatry Research基于SHAP可解释性的机器学习模型构建与评估:混淆矩阵、ROC曲线、DCA与校准曲线分析
nature communications:基于Light GBM与随机森林结合的多模型特征选择方法
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考