Python SHAP summary_plot()方法修改及画出蜂窝图的解决方式

本文介绍了Python SHAP库中summary_plot()函数在8月的更新,导致图表显示从特征的SHAP值变为mean(|SHAP值|)。作者提供了如何通过官方文档找到解决方案,即使用shap.plots.beeswarm()函数恢复原来的行为,展示了调整后的代码及运行结果。文章强调了理解SHAP值在模型解释中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8月上旬使用Python SHAP中 summary_plot()时,画出来的图依然是各特征的shap value,图状为beeswarm,但在中旬重新跑该段代码时,画出来的图为mean(|shap value|),图状为柱状图。

SHAP修改之后:

fig = plt.figure()
shap.summary_plot(shap_values, data[cols], show = False, max_display = 30)
plt.tight_layout()
plt.show()

效果如下图:
在这里插入图片描述

此时画出来的图默认是SHAP value 的mean value。
这是Python SHAP在8月近期对shap.summary_plot()的修改,此前会直接画出模型中各个特征SHAP值,这可以更好地理解整体模式,并允许发现预测异常值。每一行代表一个特征,横坐标为SHAP值。一个点代表一个样本,颜色表示特征值(红色高,蓝色低)。

因此去查询了SHAP的官方文档,发现依然可以通过shap.plots.beeswarm()实现上述功能。

# train XGBoost model
X,y = shap.datasets.adult()
model = xgboost.XGBClassifier().fit(X, y)

# compute SHAP values
explainer = shap.Explainer(model, X)
shap_values = explainer(X)

跑出来的结果如下图:
在这里插入图片描述
至此,问题完美解决。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值