Azure Data Studio Notebook运行shap.initjs()失败无法渲染SHAP可视化
问题根因
Azure Data Studio (ADS) 的 Notebook 内核默认启用了JavaScript资源注入限制,shap.initjs() 的核心作用是向当前页面注入SHAP可视化依赖的JS库,该操作被ADS的安全策略拦截,因此会触发JS库未加载的报错,可视化无法正常渲染。
可落地修复方案
- 方案1:改用matplotlib静态渲染(无需依赖JS,最便捷)
无需调用shap.initjs(),在生成force_plot时传入matplotlib=True参数,直接渲染为静态图片输出,修改后的代码如下:import matplotlib.pyplot as plt test_sample = test_x.iloc[:2000,:] shap_values_sample = explainer.shap_values(test_sample) shap.force_plot(explainer.expected_value[1], shap_values_sample[1], test_sample, link="logit", matplotlib=True) plt.show() - 方案2:导出为HTML文件保留交互能力
如果需要使用SHAP可视化的交互功能,可将生成的force_plot对象保存为本地HTML文件,后续直接用浏览器打开该文件即可正常使用所有交互效果,代码示例如下:
运行完成后到你指定的存储路径找到test_sample = test_x.iloc[:2000,:] shap_values_sample = explainer.shap_values(test_sample) force_plot = shap.force_plot(explainer.expected_value[1], shap_values_sample[1], test_sample, link="logit") shap.save_html("shap_force_plot.html", force_plot)shap_force_plot.html,用任意浏览器打开即可查看交互式可视化结果。
注意事项
- 不要在ADS Notebook中调用
shap.initjs(),该操作一定会被安全策略拦截,没有生效可能 - 其他需要依赖JS渲染的SHAP可视化(比如summary_plot的交互模式、decision_plot交互版)都可以用上述两种方案替代解决
内容的提问来源于stack exchange,提问作者Patricio Lobos
相关产品推荐
相关产品推荐

