当前位置:首页|资讯

如何自定义 SHAP 图

作者:茶桁发布时间:2024-10-20



调整颜色和图形大小,并为 SHAP 图添加标题和标签

在 Python 中自定义 SHAP 图:如何更改图形大小、添加标题或标签、调整轴限制、添加子图以及如何调整摘要、瀑布图、条形图和力图的颜色。

SHAP(SHapley Additive exPlanations)是一种流行的模型可解释性方法。SHAP Python 包可让你快速创建各种不同的开箱即用图表。其独特的蓝色和洋红色使图表可以立即识别为 SHAP 图表。

不幸的是,Python 包默认调色板既不适合色盲,也不适合复印。因此,你可能想要更改 SHAP 图的颜色。或者你可能只想根据公司身份调整颜色。或者你可能只想添加标题。

对于某些 SHAP 图,自定义比其他图更容易。一些绘图函数已经提供了此类参数,但对于某些绘图类型,你必须精打细算。

对于某些 SHAP 图来说,定制比其他图更容易。

在本文中,我们将讨论如何

  1. 1. 自定义图形和轴对象的属性,例如调整图形大小、添加标题和标签以及使用子图。

  2. 2. 自定义摘要图、瀑布图、条形图和力图的颜色。如果你需要有关如何使用 SHAP 包的介绍或复习,可以查看这篇文章:《[[Python 中的 SHAP 简介]]》

确保已安装 SHAP 0.41.0 版本。否则,你将遇到本文代码片段的错误 。

如果没有,请按如下方式升级软件包:

自定义图形和轴对象的属性

在开始着色之前,我们先来了解一下基础知识。在本节中,我们将讨论如何自定义图形和轴对象的属性。

为了能够修改 SHAP 图,你需要将show参数设置为False

show:返回之前是否调用 matplotlib.pyplot.show()。将其设置为 False 允许在创建绘图后进一步自定义绘图。[^2]

调整图形尺寸

不幸的是,当你想要调整 SHAP 图的图形大小时,调整 figsize 参数并没有太大帮助。相反,你需要设置 show = False,然后才能调整图形的大小,如下所示:

调整标题、标签和限制

设置完成后show = False,你可以像往常一样自由调整图形的属性。下面你可以看到如何更改 title、x-label 和 x-limit 的示例。

使用子图

如果想要在图中显示多个子图,可以使用方法.add_subplot()

自定义颜色

在我们了解如何自定义图表的颜色之前,让我们先稍微绕道一下,了解一下为什么 SHAP 默认调色板不合适。

最近,我写了一篇文章,强调色盲安全数据可视化的重要性。《[[为什么你的数据可视化应该适合色盲人士]]》

不幸的是,SHAP 默认调色板既不适合色盲,也不适合复印,如下图所示。顶部可以看到 SHAP 图的默认颜色条从蓝色变为洋红色。下方可以看到红绿色盲和影印模拟。两者都表明默认调色板并不理想

。使用[Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/)模拟色盲

虽然边缘颜色 — — 洋红色 (#ff0051) 和蓝色 (#008bfb) — — 对色盲来说是安全的,但由于它们具有相似的色调,因此它们并不适用于复印。

此外,渐变色调色板并不适合色盲患者,因为对于红绿色盲患者来说,中间范围的紫色色调与低范围的蓝色色调无法区分。

概要图

注意:对于本节,你必须至少安装了 SHAP 版本 0.40.0 [1] 。

对于摘要图,更改调色板是小菜一碟。从版本 0.40.0 开始,你只需使用cmap参数 [^1]。


具有默认和修改后的调色板的 SHAP 摘要图

瀑布图

注意:对于本节,你必须至少安装 SHAP 版本 0.41.0 [^3]。

由于我们没有可用于瀑布图的参数,因此我们需要采取一些巧妙的方法。

首先,你需要将show参数设置为False能够修改绘图 [^2]。对于瀑布图,我们需要调整 FancyArrow 和 Text 对象的颜色。


具有默认和修改后的调色板的 SHAP 瀑布图

条形图

对于条形图,我们需要采用与瀑布图类似的方法。

再次,你需要将show参数设置为False才能修改绘图 [^2]。对于条形图,我们需要调整矩形和文本对象的颜色。


SHAP 带有默认和修改后的调色板的条形图(图片来自作者)

力图

幸运的是,对于力图,我们可以简单地使用plot_cmap参数。

你可以手动指定颜色:


通过指定颜色强制使用修改后的调色板进行绘图

或者使用预定义的调色板:


使用预定义调色板强制绘图并修改调色板

结论

本文展示了如何快速自定义 SHAP 图。虽然有些图很容易,但对于其他图,我们必须巧妙一些。

一般来说,你需要使用 show = False 参数来调整 SHAP 图。

然后,你可以轻松自定义图形和轴对象的属性,如图形大小、标题和标签,或者可以添加子图。

自定义颜色

  • • **对于某些绘图类型,我们可以直接使用可用的参数。**例如,对于摘要绘图,我们可以使用cmap参数;对于强制绘图,我们可以使用plot_cmap参数。

  • • 对于某些绘图类型,我们没有可用的参数来更改颜色。因此,对于瀑布图和条形图等绘图,我们需要逐一更改艺术家的颜色。

如果你在使用本文的代码片段时遇到问题,请务必检查你是否至少安装了 SHAP 版本 0.41.0。

希望这篇文章对你有所帮助!你还可以阅读我的其他文章,或者查看有关企业 AI 实战项目的教程,相信会让你拥有更多收获。

参考

[^1] C. S. “Changing the gradient color of shap.summary_plot() to specific 2 or 3 RGB gradient palette Colors”. stackoverflow.com. https://stackoverflow.com/questions/60153036/changing-the-gradient-color-of-shap-summary-plot-to-specific-2-or-3-rgb-grad

[^2] “SHAP”, “Welcome to the SHAP documentation”. shap.readthedocs.io. https://shap.readthedocs.io/en/latest/index.html

[^3] J. Stevenson, “Fix bug in waterfall with show=False”. github.com. https://github.com/slundberg/shap/pull/2342



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1