使用SHAP KernelExplainer分析XGBoost DART模型时输入类型报错的解决咨询
SHAP KernelExplainer分析XGBoost DART模型时输入类型报错的解决咨询
我正在尝试为自己训练的XGBoost模型(使用DART booster)绘制SHAP分析图,想要做出类似常见的SHAP可视化效果。但因为用了DART booster,shap.TreeExplainer无法使用,所以我转而尝试shap.KernelExplainer,但它一直不接受我传入的任何常见输入类型。
第一次尝试
我的代码如下:
# Data to predict full_data = xgb.DMatrix(full_X, label=full_y, feature_names=feature_names) # Pre-trained XGB model using DART booster loaded_model.set_param({"device": "cuda"}) xgb_predict = lambda x: loaded_model.predict(x) explainer = shap.KernelExplainer(xgb_predict, full_data)
运行后得到错误:
TypeError: Unknown type passed as data object: <class 'xgboost.core.DMatrix'>
第二次尝试
我也尝试传入numpy数组:
X_np = np.array(full_X) explainer = shap.KernelExplainer(xgb_predict, X_np)
但同样返回错误:
TypeError: ('Expecting data to be a DMatrix object, got: ', <class 'numpy.ndarray'>)
我使用的是shap 0.44.0和xgboost 2.0.2,请问该如何解决这个问题?
备注:内容来源于stack exchange,提问作者Caio Atila
相关产品推荐
相关产品推荐

