如何使用加载的 xgboost 模型中的 shapely 生成瀑布图

问题描述 投票:0回答:1

我创建了这个 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.
错误。

我在这里做错了什么并且不理解?

型号 https://www.dropbox.com/scl/fi/6vn2shyvz1hn7b4majqzh/xgboost_classifier_model.json?rlkey=sha8gb61eox5mqcuudf3t2v5p&dl=0

python xgboost shap
1个回答
0
投票

尝试

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)

输出:

该图是使用我自己的数据和模型之一生成的。

© www.soinside.com 2019 - 2024. All rights reserved.