我正在通过https://towardsdatascience.com/explain-your-model-with-the-shap-values-bc36aac4de3d尝试打印force_plot
。
我在Ubuntu 20.04上运行Python 3.8.5
我运行以下代码:
shap.initjs()
# Write in a function
random_picks = np.arange(1,330,50) # Every 50 rows
S = X_test.iloc[random_picks]
def shap_plot(j):
explainerModel = shap.TreeExplainer(xg_clf)
shap_values_Model = explainerModel.shap_values(S)
p = shap.force_plot(explainerModel.expected_value, shap_values_Model[j], S.iloc[[j]])
return(p)
z = shap_plot(3)
我得到了<shap.plots._force.AdditiveForceVisualizer object at 0x7f1568cac070>
返回。
我不是python专家,所以我试着查看以下数据:
display(z)
其中没有定义。
还有print(z)
,它只返回对象的名称,并不能帮助我查看绘制的内容。
我也尝试过使用已经加载的matplotlib
,
def shap_plot(j):
explainerModel = shap.TreeExplainer(xg_clf)
shap_values_Model = explainerModel.shap_values(S)
p = shap.force_plot(explainerModel.expected_value, shap_values_Model[j], S.iloc[[j]])
plt.savefig('tmp.svg')
plt.close()
return(p)
shap_plot(3)
但这只会给出一个空的图像。
如果有错误,我看不到它。
如何让此shap.force_plot
显示图像?
发布于 2021-03-30 09:59:30
解决方案在手册中:
help(shap.force_plot)
它显示了
matplotlib : bool
Whether to use the default Javascript output, or the (less developed) matplotlib output. Using matplotlib can be helpful in scenarios where rendering Javascript/HTML is inconvenient.
实际上,运行笔记本电脑对我的目的来说非常不方便。
因此,为了保存图像:
def shap_plot(j):
explainerModel = shap.TreeExplainer(xg_clf)
shap_values_Model = explainerModel.shap_values(S)
p = shap.force_plot(explainerModel.expected_value, shap_values_Model[j], S.iloc[[j]], matplotlib = True, show = False)
plt.savefig('tmp.svg')
plt.close()
return(p)
https://stackoverflow.com/questions/66863490
复制相似问题