You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:09:03