我创建了这个 xgboost 模型作为测试,在 R 中保存为 JSON。在 R 中构建模型后,我使用
xgb.save(model, fname='xgboost_classifer_model.json')
保存它。
然后我在 python 中使用
xgboost
包来加载模型,如下所示:
import xgboost
bst = xgboost.Booster()
bst.load_model('./model/xgboost_classifier_model.json')
input_data = np.array([1,1,1,1],dtype=np.float16).reshape(1,-1)
然后我使用
shap
包来创建解释器。
import shap
explainer = shap.Explainer(bst)
shap_values = explainer.shap_values(input_data)
shap_values[0]
最后我用
sap_values
来绘图
shap.waterfall_plot(shap_values)
plt.title("SHAP Values Waterfall Plot")
plt.xlabel("SHAP Value")
plt.tight_layout()
plt.show()
我收到
The waterfall plot requires an
解释object as the
shap_values argument.
错误。
我在这里做错了什么并且不理解?
尝试
waterfall_legacy
绘制瀑布图。这是您更正后的代码:
import shap
explainer = shap.Explainer(xgb, X_train)
shap_values = explainer.shap_values(X_train)
plt.title("SHAP Values Waterfall Plot")
plt.xlabel("SHAP Value")
plt.tight_layout()
shap.plots._waterfall.waterfall_legacy(explainer.expected_value, shap_values[0], feature_names=X_train.columns)
输出:
该图是使用我自己的数据和模型之一生成的。