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官网可正常运行的示例代码
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])

非常感谢您的帮助!
内容的提问来源于stack exchange,提问作者William Thomas
相关产品推荐
相关产品推荐

