首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么每次我调用shap.plots.beeswarm的时候Shap值都会改变?

为什么每次我调用shap.plots.beeswarm的时候Shap值都会改变?
EN

Stack Overflow用户
提问于 2021-07-05 21:47:16
回答 2查看 538关注 0票数 1

下面是我使用shap的代码:

因为我只绘制了三次相同的形状值,所以我希望这三个图是相同的。然而,它一直在变化。经过一些研究,似乎每个调用的顶部都会出现一个新的值,但为什么呢?它是一个形状错误吗?

编辑1:我尝试在每次调用shap.plots.beeswarm之间加载相同的模型,但结果仍然不同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-07 17:04:04

多亏了@jared_mamrot,我找到了一个解决方案。我只需要修改shap函数beeswarm的代码就行了:

代码语言:javascript
复制
Line 57 : shap_exp = shap_values

替换为:

代码语言:javascript
复制
Line 57 : shap_exp = copy.deepcopy(shap_values)

确保导入代码顶部的库:

代码语言:javascript
复制
import copy

编辑:如果你不想更改源代码,只需在调用beeswarm时给出一份shap_values的深层副本,如下所示:

代码语言:javascript
复制
import copy    
shap.plots.beeswarm(copy.deepcopy(shap_values), max_display=15)
票数 0
EN

Stack Overflow用户

发布于 2021-07-07 12:59:47

基于this github issue,这个问题与“xx个其他特征的总和”变量的创建有关。这个变量是临时的,即您只使用它一次进行绘图(如果您再次运行shap.plots.beeswarm,则结果是错误的)。所以我猜你的问题的一个解决方案是“不要多次运行它,就没有问题”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68257249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档