【问题标题】:Why are shap values changing every time I call shap.plots.beeswarm?为什么每次调用 shap.plots.beeswarm 时 shap 值都会发生变化?
【发布时间】:2021-09-16 07:12:58
【问题描述】:

这是我使用 shap 的代码:

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

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

【问题讨论】:

    标签: python xgboost shap


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      感谢@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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        • 2016-06-12
        • 1970-01-01
        • 2020-06-13
        • 2017-05-02
        • 2012-11-29
        • 1970-01-01
        相关资源
        最近更新 更多