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

神经网络模型可解释性SHAP绘图出现异常Class 0问题求助

问题原因与解决方法

问题根源

你遇到的两个问题本质是同一个原因导致的:你的ANN模型predict方法输出为形状(样本数量, 1)的二维数组,SHAP会将每个输出维度识别为一个独立的分类类别,因此出现了Class 0标识,同时触发多分类场景下的分组绘图逻辑,导致样式和传统回归任务的摘要图不一致。

解决方法

你可以任选以下一种方法修复问题:

  • 方法1:直接调整生成的shap_values维度
    先打印shap_values的形状确认结构,再做对应调整即可:
    # 如果shap_values是长度为1的列表,取第一个元素
    shap_values = shap_values[0]
    
    # 如果shap_values是三维数组(样本数,特征数,1),切片去掉最后一维
    # shap_values = shap_values[:,:,0]
    
    调整后再调用shap.summary_plot(shap_values, X_test, feature_names=features)即可得到传统样式的摘要图,且不会出现Class 0标识。
  • 方法2:提前包装预测函数,输出一维结果(更稳妥,避免后续其他SHAP绘图也出现类似问题)
    import shap
    
    # 特征名
    features = list(dataset.iloc[:, 0:-1].columns)
    
    # 包装预测函数,拉平输出为一维数组
    def ann_predict(x):
        return ann.predict(x).flatten()
    
    explainer = shap.KernelExplainer(ann_predict,X_train)
    shap_values = explainer.shap_values(X_test, nsamples=100)
    
    shap.summary_plot(shap_values, X_test, feature_names=features)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:54:01