Science期刊复现:分类、回归与Shap分析多角度揭示同一数据集变量对目标的影响

机器学习大模型向量数据库

picture.image

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

本节介绍: 分类、回归与Shap分析多角度揭示同一数据集变量对目标的影响 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 完整 数据和代码、文献将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。 文末点赞、推荐、转发参与免费包邮赠书~

✨ 文献信息 ✨

picture.image

picture.image

picture.image

文献使用机器学习模型来分析全球土壤无机碳(SIC)的分布、大小和易损性。具体来说,作者开发机器学习模型,将土壤无机碳含量与气候、地形、岩性、植被、土壤属性以及人为活动等空间数据相关联。这些模型通过以下步骤进行:

  • 首先使用分类模型预测土壤是否含有无机碳(SIC=0或非0),并通过回归模型量化非零SIC的含量。模型的性能通过AUC(曲线下面积)和R²(决定系数)来评估
  • 分类模型的AUC值为0.99,F值为0.95;回归模型的R²为0.79,均方根误差为6.17 g kg⁻¹,且通过10折交叉验证进一步验证了模型的可靠性
  • Shapley值分析:后续对分类模型和回归模型进行Shapley值分析,揭示各个变量对SIC预测结果的贡献。Shapley值提供了对每个输入变量(如土壤pH、气候、地形等)对目标变量影响的详细解读,有助于理解这些变量在模型预测中的重要性和相对作用

接下来将在模拟数据集上复现该方法,主要按照分类、回归与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-22公众号Python机器学习AI.csv"  
df = pd.read_csv(path, index_col=0)  
df

picture.image

代码加载一个房价数据集,其中目标变量是房价的对数值(log_price),通过对数据进行分类和回归分析。分类时,通过房价均值将数据分为低价和高价两类,然后对高价类进行回归分析。这个过程模拟文献中的分类和回归流程,重点在于实现整个分析流程,包括分类和回归的步骤,当然文献中是对SIC=0或非0进行分类,对 SIC非0进行回归

picture.image

这三个图展示了数据集的空间分布:

  • 第一个图展示了所有数据点的分布。每个点代表一个房产的位置,而颜色代表了对应的对数房价(log_price)值。这是我们整个数据集的全貌,展示了房产的地理位置和房价分布
  • 第二个图是针对低值log_price的分布可视化。分类模型将关注这一部分数据,将低房价区域标识出来,并与其他区域进行对比
  • 第三个图是针对高值log_price的分布可视化。 分类模型将关注这一部分数据 ,回归模型主要关注这部分数据,以预测高房价区域的log_price,并进行相应的回归分析

分类模型将数据分为低房价和高房价两个类别,关注的是第二个和第三个图的区域分布,而回归模型则专注于第三个图中的高房价数据,通过回归分析来预测这些区域的房价

  
from sklearn.model_selection import train_test_split  
  
# 划分特征和目标变量  
X = df.drop(['log_price', 'UTM_X', 'UTM_Y', 'log_price', 'log_price_class'], axis=1)   
y = df['log_price_class']    
# 划分训练集和测试集  
X_train, X_test, y_train, y_test = train_test_split(  
    X,    
    y,   
    test_size=0.3,   
    random_state=42,   
    stratify=df['log_price_class']   
)  
  
from sklearn.model_selection import cross_val_score, KFold  
from xgboost import XGBClassifier  
  
# 初始化 XGBoost 分类模型 没有进行调参  
model_class_xgb = XGBClassifier(  
    n_estimators=100,  # 使用100棵决策树  
    max_depth=6,        # 树的最大深度  
    learning_rate=0.1,  # 学习率  
    objective='binary:logistic',  # 二分类任务  
    random_state=42,    # 设置随机种子,确保结果可复现  
    eval_metric='auc',  # 使用 AUC 作为评估标准  
    use_label_encoder=False,  # 避免显示警告  
    verbose=False  
)  
  
# 创建 KFold 交叉验证对象并设置随机种子  
kf_class_xgb = KFold(n_splits=10, random_state=42, shuffle=True)  
  
# 使用 10 折交叉验证评估 XGBoost 分类模型表现,评分标准使用 AUC(ROC曲线下面积)  
cv_scores_class_xgb = cross_val_score(model_class_xgb, X_train, y_train, cv=kf_class_xgb, scoring='roc_auc')  
  
# 输出每折的 AUC 成绩以及平均 AUC 成绩  
print(f"每折的 AUC 成绩: {cv_scores_class_xgb}")  
print(f"平均 AUC 成绩: {np.mean(cv_scores_class_xgb)}")  
  
# 训练最终模型  
model_class_xgb.fit(X_train, y_train)  
  
from sklearn.metrics import roc_curve, auc  
# 计算 model_class_xgb 在测试集上的预测概率  
y_test_pred_xgb = model_class_xgb.predict_proba(X_test)[:, 1]  
# 计算 ROC 曲线和 AUC 值  
fpr_test_xgb, tpr_test_xgb, _ = roc_curve(y_test, y_test_pred_xgb)  
roc_auc_test_xgb = auc(fpr_test_xgb, tpr_test_xgb)  
# 绘制 ROC 曲线  
plt.figure(figsize=(12, 10))  # 图形尺寸更大  
# 绘制测试集 ROC 曲线  
plt.plot(fpr_test_xgb, tpr_test_xgb, label=f"Test: AUC={roc_auc_test_xgb:.3f} (n={len(y_test)})", color="#B0D9A5", linewidth=3)  
# 绘制随机分类器的参考线 (红色虚线)  
plt.plot([0, 1], [0, 1], color='red', linestyle='--', linewidth=3, label='Random Classifier')   
# 绘制完美分类器的参考线 (灰色虚线)  
plt.plot([0, 0, 1], [0, 1, 1], color='gray', linestyle='--', linewidth=3, label='Perfect Classifier')   
plt.xlabel("False Positive Rate (1-Specificity)", fontsize=20)   
plt.ylabel("True Positive Rate (Sensitivity)", fontsize=20)    
plt.xticks(fontsize=18)    
plt.yticks(fontsize=18)    
plt.legend(loc="lower right", fontsize=20)    
# 去除顶部和右侧边框  
ax = plt.gca()  # 获取当前坐标轴  
ax.spines['top'].set_visible(False)  
ax.spines['right'].set_visible(False)  
ax.spines['left'].set_linewidth(2)  
ax.spines['bottom'].set_linewidth(2)  
# 关闭网格线  
plt.grid(False)  
# 自动调整布局  
plt.tight_layout()  
plt.savefig("ROC.pdf", format='pdf',bbox_inches='tight',dpi=1200)  
plt.show()

picture.image

通过XGBoost分类模型在房价数据集上进行二分类任务的训练与评估,使用10折交叉验证计算AUC评分,并绘制ROC曲线,展示模型在测试集上的性能表现。虽然文献中没有具体说明使用了哪个模型及其调参过程,但重要的是 这种思想的实现 ,所以上面使用一个简单的模型来复现这一过程

接下来,将继续使用类似的方法对高价类进行回归分析,重点分析实际房价与预测房价之间的误差,并进一步优化模型性能

picture.image

这张图展示了高价类数据在回归分析中的实际值与预测值之间的关系。图中红色虚线表示理想的预测线(y = x线),黑色实线表示回归模型的拟合线,黑色虚线表示95%的预测带。图中的蓝色散点代表实际值和预测值的分布,颜色深浅表示数据点的密度。此外,图下方显示了回归模型的性能指标:均方根误差(RMSE)、平均绝对误差(MAE)和决定系数(R²),这些指标帮助评估回归模型的预测准确性

picture.image

最后展示分类模型和回归模型的SHAP(Shapley值)解读:

  • 左侧图:展示不同特征对模型预测结果的贡献度,颜色深浅表示特征对分类模型和回归模型的重要性。比如,sqft_living、grade 和 age 是对模型预测影响最大的特征
  • 右侧图:显示了分类模型和回归模型各自对于排名前三最重要预测因子的SHAP值反应。对于分类模型,grade、age 和 sqft_living 是影响分类预测的主要特征;对于回归模型,这些特征的SHAP值变化展示它们在预测目标变量时的贡献,表现出不同特征如何影响高价类预测和回归模型结果

通过SHAP值的分析,能够更好地理解特征与目标变量之间的关系,尤其是在模型预测过程中各个特征对结果的具体贡献

picture.image

这里是一个扩展补充,可视化分类模型中grade特征的SHAP值分布,帮助理解该特征在不同地理区域对模型预测的贡献。通过颜色映射,可以直观地看到在某些区域grade对模型预测的影响最大、最小,甚至没有影响,SHAP值的绝对值大小代表特征对模型预测结果的影响程度,而正负符号代表特征对预测结果的影响方向,其它特征可以做类似的可视化

✨ 该文章案例 ✨

picture.image

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

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

✨ 购买介绍 ✨

本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。

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

✨ 群友反馈 ✨

picture.image

✨ 淘宝店铺 ✨

picture.image

请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!

✨ 免费赠书 ✨

picture.image

picture.image

支持知识分享,畅享学习乐趣!特别感谢清华大学出版社 对本次赠书活动的鼎力支持!即日起,只需点赞、推荐、转发 此文章,作者将从后台随机抽取一位幸运儿,免费包邮赠送清华出版社提供的《鸿蒙HarmonyOS NEXT开发之路 卷2:从入门到应用篇》这本精彩书籍📚!

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

往期推荐

机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学

期刊配图:基于SHAP算法的驱动因子相互作用贡献矩阵图

因果推断:利用EconML实现双重机器学习估计条件平均处理效应 (CATE)

期刊复现:基于部分线性模型的双重机器学习方法

期刊复现:基于XGBoost模型的网页工具SHAP力图解释单样本预测结果

期刊配图:nature cities通过ALE(累积局部效应)解析特征对模型影响

期刊复现:结合因果推断与SHAP可解释性的机器学习实现应用流程

期刊配图:一区SCI常用数据缺失率展示图可视化

因果推断:注册行为对后续消费影响的因果推断分析案例

nature communications:基于Light GBM与随机森林结合的多模型特征选择方法

因果推断与机器学习结合:探索酒店预订取消的影响因素

picture.image

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

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论