Databricks内核重启后SHAP summary plot无法显示的问题求助
问题描述
在Databricks中运行以下SHAP绘图代码时,仅输出<Figure size 576x684 with 2 Axes>,无法显示实际图形;且该问题不仅出现在SHAP绘图中,其他绘图也存在相同异常:
shap.summary_plot(shap_values.values, X[input_cols]) # 或 shap.summary_plot(shap_values, X[input_cols])
此前代码可正常运行,内核重启后出现该问题。相关前置代码如下:
import shap explainer=shap.TreeExplainer(pipelineModel.stages[2])# 从PySpark Pipeline中提取的梯度提升模型 shap_values=explainer(X,check_additivity=False)# X为模型预测用的DataFrame
已确认shap_values和X数据正常,模型可正常完成预测;尝试添加matplotlib=True参数会直接引发错误。
解决方案
强制配置Matplotlib inline后端
内核重启后可能丢失默认绘图后端配置,在代码开头添加以下内容,确保图形直接在单元格内渲染:import matplotlib.pyplot as plt %matplotlib inline注意
%matplotlib inline是IPython魔法命令,需放在代码块最上方生效。手动触发图形渲染
部分场景下SHAP绘图函数不会自动调用渲染方法,需手动添加触发代码:shap.summary_plot(shap_values.values, X[input_cols]) plt.show()检查并修复依赖包版本兼容
内核重启后可能出现依赖包版本冲突(尤其是SHAP、Matplotlib与PySpark的版本匹配问题):- 运行以下命令查看当前版本:
print(shap.__version__, matplotlib.__version__) - 若版本不兼容,重新安装适配版本(示例版本可根据Databricks Runtime调整):
%pip install shap==0.41.0 matplotlib==3.7.1
- 运行以下命令查看当前版本:
切换至静态绘图渲染模式
若Databricks默认启用了交互式绘图后端(如Plotly),可能与Matplotlib/SHAP冲突,可通过以下命令切换回静态渲染:%config InlineBackend.figure_format = 'retina'
内容的提问来源于stack exchange,提问作者DrRaspberry
相关产品推荐
相关产品推荐

