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

如何为所有SHAP值批量绘制Force Plot?LSTM模型可视化问题

解决SHAP循环绘制Force Plot无输出的问题

问题原因

在Jupyter Notebook/Lab这类交互式环境中,单独执行shap.force_plot()时,环境会自动捕获并渲染返回的可视化对象;但在循环逻辑里,生成的可视化对象不会被自动触发渲染,必须显式调用展示方法。

具体解决方法

方法1:用IPython的display函数显式展示

导入display模块,在循环中每次生成Force Plot后调用它来触发渲染:

import shap
from IPython.display import display

def f(x):
        return LSTM_model.predict(x)
shap.initjs()
shap_values50 = explainer.shap_values(test_windows[0:50], nsamples=500)

# 循环绘制并显式展示每个样本的Force Plot
for i in range(50):
    plot = shap.force_plot(explainer.expected_value, shap_values50[0][i])
    display(plot)

方法2:批量导出为HTML文件(适合存档或单独查看)

如果需要保存所有样本的Force Plot,可将每个图导出为HTML文件,之后直接打开文件查看:

import shap

def f(x):
        return LSTM_model.predict(x)
shap.initjs()
shap_values50 = explainer.shap_values(test_windows[0:50], nsamples=500)

# 循环生成并保存每个样本的Force Plot为HTML
for i in range(50):
    plot = shap.force_plot(explainer.expected_value, shap_values50[0][i])
    shap.save_html(f"eth_price_force_plot_{i}.html", plot)

注意事项

  • 若在普通Python脚本而非交互式环境中运行,Force Plot的网页式渲染无法直接展示,建议优先使用Jupyter类环境。
  • 批量生成50个Force Plot可能导致Notebook页面加载缓慢,可按需分批次生成展示。

内容的提问来源于stack exchange,提问作者Sinan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:45:36