为什么我用Python绘制的SHAP图显示为灰色而非红蓝色?
SHAP结合Catboost绘图无红蓝色块、整体呈灰色解决方案
- 特征值矩阵缺失
调用shap.summary_plot()等可视化函数时,必须同时传入SHAP值数组和原始特征矩阵X两个核心参数,缺少特征矩阵时SHAP无法基于特征数值的高低映射红蓝配色,会直接输出灰色图。 - Catboost输出的SHAP值维度不匹配
分类任务中Catboost原生输出的SHAP值为三维数组(样本数×特征数×类别数),直接传入绘图函数会导致格式识别错误。二分类场景下可通过shap_values = explainer(X)[:,:,1]提取正类对应的SHAP值后再绘图,多分类场景按需指定对应类别维度即可。 - 颜色映射配置错误
检查绘图代码是否误将cmap参数设置为灰度色系,可显式指定配色参数覆盖默认配置,示例代码:shap.summary_plot(shap_values, X, cmap="RdBu_r")。 - 特征未做数值化编码
若传入的特征全为字符串类型的类别特征,SHAP无法判定特征值高低,无法生成渐变配色,需要先将类别特征编码为数值型后再传入SHAP解释器。
内容的提问来源于stack exchange,提问作者new_to_ds
相关产品推荐
相关产品推荐

