下面是我使用shap的代码:

因为我只绘制了三次相同的形状值,所以我希望这三个图是相同的。然而,它一直在变化。经过一些研究,似乎每个调用的顶部都会出现一个新的值,但为什么呢?它是一个形状错误吗?
编辑1:我尝试在每次调用shap.plots.beeswarm之间加载相同的模型,但结果仍然不同。
发布于 2021-07-07 17:04:04
多亏了@jared_mamrot,我找到了一个解决方案。我只需要修改shap函数beeswarm的代码就行了:
Line 57 : shap_exp = shap_values替换为:
Line 57 : shap_exp = copy.deepcopy(shap_values)确保导入代码顶部的库:
import copy编辑:如果你不想更改源代码,只需在调用beeswarm时给出一份shap_values的深层副本,如下所示:
import copy
shap.plots.beeswarm(copy.deepcopy(shap_values), max_display=15)发布于 2021-07-07 12:59:47
基于this github issue,这个问题与“xx个其他特征的总和”变量的创建有关。这个变量是临时的,即您只使用它一次进行绘图(如果您再次运行shap.plots.beeswarm,则结果是错误的)。所以我猜你的问题的一个解决方案是“不要多次运行它,就没有问题”。
https://stackoverflow.com/questions/68257249
复制相似问题