保存Shap生成的神经网络解释图(shap.image_plot)

调用shap.image_plot后发现使用plt.savefig保存下来的图像为空白图,经过查资料发现这是因为调用plt.show()后会生成新画板。(参考链接:保存plot_如何解决plt.savefig()保存的图片为空白的问题?

找到了一篇介绍如何保存Shap图的博客(原文地址:shap解释模型特征,多张图保存的实现(要改源码)),但是里面并没有提到image_plot怎么处理。此外,前面那个链接里提到的“先在画图前调用myfig = plt.gcf(),再调用myfig.savefig()的方法也不起作用”。

最后干脆去看了一下shap.image_plot的源代码,不知道怎么查看函数源代码的朋友可以去看一下我写的另一篇博客,简单易操作(链接:Python查看函数源码)发现image_plot使用plt显示图像的源代码为:

if show:
	pl.show()

这就好办了,show是调用image_plot时可以选择传递的一个参数,默认为True,调用的时候设为False就行了,代码如下:

shap.image_plot(shap_values, -x_test[1:5], show = False)
plt.savefig('./shap.png')

然后就能在源码同级目录下看到保存的shap.png了。

Logo

鸿蒙生态一站式服务平台。

更多推荐