如何在 streamlit 中缓存绘图?
How to cache a plot in streamlit?
我在 streamlit 中构建了一个仪表板,您可以在其中 select client_ID 并显示 SHAP 图(瀑布图和力图)来解释此客户的信用违约预测。
我还想显示包含整个火车数据集的 SHAP 摘要图。后面的不会每次做新的预测都变,而且plot很费时间,所以想缓存一下。我想最好的方法是使用 st.cache 但我没能做到。
下面是我在main.py中尝试失败的代码:
我首先定义要缓存输出的函数(图),然后在 st.pyplot 中执行输出。它在没有 st.cache 装饰器的情况下工作,但是一旦我添加它并重新运行应用程序,函数 summary_plot_all 就会无限期地运行
输入:
@st.cache
def summary_plot_all():
fig, axes = plt.subplots(nrows=1, ncols=1)
shap.summary_plot(shapvs[1], prep_train.iloc[:, :-1].values,
prep_train.columns, max_display=50)
return fig
st.pyplot(summary_plot_all())
OUT(显示在 streamlit 应用中)
Running summary_plot_all().
有谁知道在 streamlit 中缓存绘图有什么问题或更好的方法吗?
version of packages:
streamlit==0.84.1,
matplotlib==3.4.2,
shap==0.39.0
尝试
import matplotlib
@st.cache(hash_funcs={matplotlib.figure.Figure: lambda _: None})
def summary_plot_all():
fig, axes = plt.subplots(nrows=1, ncols=1)
shap.summary_plot(shapvs[1], prep_train.iloc[:, :-1].values,
prep_train.columns, max_display=50)
return fig
勾选这个streamlit
githubissue
我在 streamlit 中构建了一个仪表板,您可以在其中 select client_ID 并显示 SHAP 图(瀑布图和力图)来解释此客户的信用违约预测。
我还想显示包含整个火车数据集的 SHAP 摘要图。后面的不会每次做新的预测都变,而且plot很费时间,所以想缓存一下。我想最好的方法是使用 st.cache 但我没能做到。
下面是我在main.py中尝试失败的代码: 我首先定义要缓存输出的函数(图),然后在 st.pyplot 中执行输出。它在没有 st.cache 装饰器的情况下工作,但是一旦我添加它并重新运行应用程序,函数 summary_plot_all 就会无限期地运行
输入:
@st.cache
def summary_plot_all():
fig, axes = plt.subplots(nrows=1, ncols=1)
shap.summary_plot(shapvs[1], prep_train.iloc[:, :-1].values,
prep_train.columns, max_display=50)
return fig
st.pyplot(summary_plot_all())
OUT(显示在 streamlit 应用中)
Running summary_plot_all().
有谁知道在 streamlit 中缓存绘图有什么问题或更好的方法吗?
version of packages:
streamlit==0.84.1,
matplotlib==3.4.2,
shap==0.39.0
尝试
import matplotlib
@st.cache(hash_funcs={matplotlib.figure.Figure: lambda _: None})
def summary_plot_all():
fig, axes = plt.subplots(nrows=1, ncols=1)
shap.summary_plot(shapvs[1], prep_train.iloc[:, :-1].values,
prep_train.columns, max_display=50)
return fig
勾选这个streamlit
githubissue