You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在imblearn Pipeline后使用SHAP?附报错及代码示例

问题解决:TreeExplainer不支持imblearn Pipeline类型报错

报错原因

TreeExplainer仅支持树结构模型(如AdaBoost、RandomForest等),但你传入的是整个imblearn Pipeline对象(包含SMOTE过采样和AdaBoost模型两个步骤),因此触发不支持类型的报错。

解决方案

从训练好的Pipeline中提取出内部的AdaBoost模型,再传入TreeExplainer即可。

修改后的SHAP代码

# 从最佳Pipeline中提取AdaBoost模型
best_adaboost = tuned_adaboost.best_estimator_.named_steps['adaboost']

# 初始化TreeExplainer并计算SHAP值
explainer = shap.TreeExplainer(best_adaboost)
shap_values = explainer.shap_values(X_test)
shap.summary_plot(shap_values[1], X_test)

补充说明

  • Pipeline中的SMOTE仅作用于训练阶段,解释模型时直接使用原始测试集X_test即可,无需额外过采样。
  • 使用named_steps['adaboost']可以清晰定位到Pipeline中指定名称的步骤,比通过索引(如steps[1][1])更易读、更鲁棒。

内容的提问来源于stack exchange,提问作者new_data

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:20:27