✨ 欢迎关注Python机器学习AI ✨
本节介绍: 基于RF模型的SHAP解读 不同条件下模型的交互效应热图分析 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码、文献将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。
✨ 文献信息 ✨
根据热图和文献中的分析,这幅图展示在不同环境条件下(白天和夜间)模型特征之间交互效应 对结果的影响,具体反映了不同特征(如气象因素、城市特征等)在不同时间段内各自对结果预测结果作用的贡献。每个单元格代表不同特征对交互效应的影响程度,通过SHAP交互值量化这些影响,揭示了特征间复杂的非线性关系及其对模型输出的影响。红色区域表示白天特征之间的交互效应,而蓝色区域则代表发生在夜间特征之间的交互效应。通过这种可视化分析,能够更仔细地观察不同环境条件下,特征间的交互作用如何影响最终结果以及不同条件下相同特征的交互是否不同,往期文章—期刊复现:基于RF模型的SHAP总效应自定义全局解释与特征散点图优化、期刊复现:基于RF模型的SHAP主效应蜂巢图和交互效应堆叠柱状图分析的可视化形式,都是针对这一篇论文进行的复现,这篇文献从shap: Total efects、 Main effects、 Interaction effect analysis,给出了一个很完整的流程,常见的文章一般都只讨论 Total efects也就是shap值,值得仔细学习
✨ 仿图 ✨
该幅图展示在我们的模拟数据集上,不同房屋年龄区间(老房子(高)与较新房子(低))各自特征交互对房价预测结果的影响。通过热图的交互效应值展现形式,可以观察到各特征(如房间数、面积、等级等)在不同房龄区间下的交互对房价预测结果的影响程度,实际上,读者在使用时需要根据实际情况确定这些条件即可
✨ 部分代码 ✨
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-5-18公众号Python机器学习AI.xlsx"
df = pd.read_excel(path)
from sklearn.model_selection import train_test_split
# 划分特征和目标变量
X_high = df_high_age.drop(['log_price', 'UTM_X', 'UTM_Y'], axis=1)
y_high = df_high_age['log_price']
# 划分训练集和测试集
X_train_high, X_test_high, y_train_high, y_test_high = train_test_split(
X_high,
y_high,
test_size=0.3,
random_state=42
)
# 划分特征和目标变量
X_low = df_low_age.drop(['log_price', 'UTM_X', 'UTM_Y'], axis=1)
y_low = df_low_age['log_price']
# 划分训练集和测试集
X_train_low, X_test_low, y_train_low, y_test_low = train_test_split(
X_low,
y_low,
test_size=0.3,
random_state=42
)
from sklearn.model_selection import cross_val_score, KFold
from sklearn.ensemble import RandomForestRegressor
import numpy as np
# 初始化随机森林回归模型
model_high = RandomForestRegressor(
n_estimators=100, # 使用100棵决策树
max_depth=None, # 没有最大深度限制
bootstrap=True, # 使用bootstrap样本
criterion='squared_error', # 使用均方误差准则
max_features='sqrt', # 每棵树评估特征的平方根('sqrt')
random_state=42, # 设置随机种子,确保结果可复现
verbose=False
)
model_low = RandomForestRegressor(
n_estimators=100,
max_depth=None,
bootstrap=True,
criterion='squared_error',
max_features='sqrt',
random_state=42,
verbose=False
)
# 创建 KFold 交叉验证对象并设置随机种子
kf = KFold(n_splits=10, random_state=42, shuffle=True)
# 高年龄组数据:使用 10 折交叉验证评估模型表现,评分标准使用 R²(拟合优度)
cv_scores_high = cross_val_score(model_high, X_train_high, y_train_high, cv=kf, scoring='r2')
print(f"高年龄组每折的 R² 成绩: {cv_scores_high}")
print(f"高年龄组平均 R² 成绩: {np.mean(cv_scores_high)}")
# 低年龄组数据:使用 10 折交叉验证评估模型表现,评分标准使用 R²(拟合优度)
cv_scores_low = cross_val_score(model_low, X_train_low, y_train_low, cv=kf, scoring='r2')
print(f"低年龄组每折的 R² 成绩: {cv_scores_low}")
print(f"低年龄组平均 R² 成绩: {np.mean(cv_scores_low)}")
# 在高年龄组训练集上训练模型
model_high.fit(X_train_high, y_train_high)
# 在低年龄组训练集上训练模型
model_low.fit(X_train_low, y_train_low)
加载数据集并使用随机森林回归模型,分别对高年龄组和低年龄组的房价进行预测,使用10折交叉验证评估模型的R²表现,并训练两个模型分别评估两个年龄组的数据集
combined_df = upper_triangle_high.combine_first(lower_triangle_low)
combined_df
当训练好模型过后计算每个特征对应的交互效应值即可,当然这里没有给出完整代码,使用combine_first()方法将两个数据集进行upper_triangle_high合并lower_triangle_low,确保高年龄组和低年龄组的交互效应值在一个表中得到体现。每个对应特征的交互值通过合并后的数据集来进行计算。完整代码如何获取将在文末提供,最后对这个数据进行文献类似的可视化即可
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!
往期推荐
机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学
因果推断:利用EconML实现双重机器学习估计条件平均处理效应 (CATE)
期刊复现:基于XGBoost模型的网页工具SHAP力图解释单样本预测结果
期刊配图:nature cities通过ALE(累积局部效应)解析特征对模型影响
期刊复现:结合因果推断与SHAP可解释性的机器学习实现应用流程
nature communications:基于Light GBM与随机森林结合的多模型特征选择方法
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考