如何解决形状力图不显示图:shap.plots._force.AdditiveForceVisualizer
我正在通过 https://towardsdatascience.com/explain-your-model-with-the-shap-values-bc36aac4de3d 尝试打印 force_plot
。
我在 Ubuntu 20.04 上运行 Python 3.8.5
我运行此代码:
shap.initjs()
# Write in a function
random_picks = np.arange(1,330,50) # Every 50 rows
S = X_test.iloc[random_picks]
def shap_plot(j):
explainerModel = shap.TreeExplainer(xg_clf)
shap_values_Model = explainerModel.shap_values(S)
p = shap.force_plot(explainerModel.expected_value,shap_values_Model[j],S.iloc[[j]])
return(p)
z = shap_plot(3)
然后我得到 <shap.plots._force.AdditiveForceVisualizer object at 0x7f1568cac070>
返回。
我不是 Python 专家,所以我尝试查看这些数据:
display(z)
未定义。
和 print(z)
只返回对象的名称,并不能帮助我查看绘制的内容。
我也试过使用已经加载的 matplotlib
,
def shap_plot(j):
explainerModel = shap.TreeExplainer(xg_clf)
shap_values_Model = explainerModel.shap_values(S)
p = shap.force_plot(explainerModel.expected_value,S.iloc[[j]])
plt.savefig('tmp.svg')
plt.close()
return(p)
shap_plot(3)
但这只是给出了一个空图像。
如果有错误,我看不到。
我怎样才能让这个 shap.force_plot
显示图像?
解决方法
解决方案在手册中:
help(shap.force_plot)
显示
matplotlib : bool
Whether to use the default Javascript output,or the (less developed) matplotlib output. Using matplotlib can be helpful in scenarios where rendering Javascript/HTML is inconvenient.
确实,运行笔记本对我来说非常不方便。
所以为了保存图像:
def shap_plot(j):
explainerModel = shap.TreeExplainer(xg_clf)
shap_values_Model = explainerModel.shap_values(S)
p = shap.force_plot(explainerModel.expected_value,shap_values_Model[j],S.iloc[[j]],matplotlib = True,show = False)
plt.savefig('tmp.svg')
plt.close()
return(p)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。