I want to return shap plots on the callback of button click which uses drop down values as input :
Following is the code to build shap :
model_shap = RandomForestRegressor(random_state=37,max_depth= 11, max_features= ‘log2’, n_estimators= 100)
model_shap.fit(modeldata[s_final_v1],filtered_target)
shap_values = shap.TreeExplainer(model_shap).shap_values(model_data[s_final_v1])
shap.summary_plot(shap_values, model_data[s_final_v1],show=False)
Can anyone suggest how to return this to div on a button click ?
Hi @Mighty welcome to the forum! From a quick look at the shap
repo, it looks like shap.summary_plot
returns a matplotlib figure object, which you can save to a png or svg file with
shap.summary_plot(shap_values, model_data[s_final_v1],show=False)
import matplotlib.pyplot as plt
plt.savefig('image.png')
and then you can display the image inside a div with html.Image
from dash_html_components
.
To be honest ,I did exactly same
shap.summary_plot(shap_values, filtered_model_data[s_final_v1],show=False)
plt.gcf().subplots_adjust(bottom=0.15)
plt.savefig(r"path\shap_ppo1.png")
Its not saving + dash automatically takes me to the first tab of the screen ( and this is placed on the third tab )
It doesn’t let me see the error as it redirects to first tab. However , I see a warning which I have not been able to decode :
WARNING: QApplication was not created in the main() thread.