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

SHAP值与XGBoost模型预测结果不一致问题求助

SHAP Waterfall图f(x)与XGBoost模型预测值不一致问题

刚自学相关工具两天,可能犯了简单错误,恳请帮助。我尝试用SHAP的waterfall图可视化XGBoost模型各变量对球队排名预测的影响,该模型输入13个球队薪资相关变量,模型本身表现良好,但SHAP值存在异常——据我理解,waterfall图右上角的f(x)应与模型预测值一致,但实际并非如此。

我的代码

import shap
from joblib import dump, load
import xgboost as xgb
import pandas as pd
import numpy as np

filen = f"D:\miniconda-keep\Created Data\Done Data - Copy.csv"
X = pd.read_csv(filen).iloc[:,3:-3].div(10000).astype(int)
y = pd.read_csv(filen).iloc[:,-1:].astype(int).subtract(1)

model = load("D:\miniconda-keep\Saved Will Made Files\Models\Successful_XGBoost_Model.joblib")


explainer = shap.Explainer(model)
shap_values = explainer(X)
pred = model.predict(X)

#EDIT THE VARIABLE BELOW TO LOOK AT DIFFERENT TEAMS
to_pred = 21

print(X.iloc[to_pred].subtract(X.mean(axis=0)))

print('Team:',pd.read_csv(filen).iloc[to_pred,1])
print(f"model pred {pred[to_pred]+1}")

shap.plots.waterfall(shap_values[to_pred,:,pred[to_pred]])

输出及Waterfall图

Average Salary                 73.311005
Highest Salary               1280.382775
Number of Homegrowns            0.000000
Salary IQR                     25.593301
Salary Standard Deviation     239.521531
Average GK Salary               5.866029
Average Defender Salary        10.866029
Average Midfielder Salary     118.449761
Average Attacker Salary       137.674641
Highest Goalkeeper Salary      32.688995
dtype: float64
Team: Toronto FC
model pred 15

SHAP Waterfall输出

SHAP官网可正常运行的示例代码

import xgboost

import shap

# train XGBoost model
X, y = shap.datasets.adult()
model = xgboost.XGBClassifier().fit(X, y)

# compute SHAP values
explainer = shap.Explainer(model, X)
shap_values = explainer(X)

shap.plots.waterfall(shap_values[0])

SHAP官方示例Waterfall图

非常感谢您的帮助!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:52:27