Day14shap图绘制

#作业1
import shap
import xgboost
import pandas as pd
 

X, y = shap.datasets.adult()
model = xgboost.XGBClassifier(eval_metric='mlogloss').fit(X, y)
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
 
# 汇总图
shap.summary_plot(shap_values, X)
 
# 力引导图
shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])
 
# 依赖图
shap.dependence_plot("Age", shap_values, X)
 
# 决策图
shap.decision_plot(explainer.expected_value, shap_values[0], X.columns)




#作业3
#分类
import shap
import xgboost
import pandas as pd
 
# 数据集
data = pd.read_csv('credit_data.csv')
X = data.iloc[:, 1:]
y = data.iloc[:, 0]
 
# 训练分类模型
model = xgboost.XGBClassifier(eval_metric='mlogloss').fit(X, y)
 
# 创建解释器并计算 SHAP 值
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
 
# 绘制汇总图
shap.summary_plot(shap_values, X)

#回归
import shap
import xgboost
import pandas as pd
 
# 加载单车数据集
data = pd.read_csv('bike_data.csv')
X = data.iloc[:, 1:]
y = data.iloc[:, 0]
 
# 训练回归模型
model = xgboost.XGBRegressor().fit(X, y)
 
# 创建解释器并计算 SHAP 值
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
 
# 绘制汇总图
shap.summary_plot(shap_values, X)

作业2

SHAP 绘图函数参数尺寸要求

1. shap.force_plot

  • 单个样本(静态图)
    • base_value:float(基准预测值,如 0.5)
    • shap_values:(n_features,)(如 [0.2, -0.1, 0.3])
    • features(可选):(n_features,) 或 (1, n_features)
  • 多个样本(交互式图)
    • shap_values:(n_samples, n_features)
    • features(可选):(n_samples, n_features)
  • 多分类
    • shap_values:(n_classes, n_samples, n_features)
  • ______
    2. shap.summary_plot
    • 单分类/回归
      • shap_values:(n_samples, n_features)
      • features:(n_samples, n_features)
    • 多分类
      • shap_values:(n_classes, n_samples, n_features) 或 列表(每类一个 (n_samples, n_features) 数组)
    • ______
      3. shap.dependence_plot
      • ind:特征索引(int)或名称(str)
      • shap_values:(n_samples, n_features)
      • features:(n_samples, n_features)
    • ______
      4. shap.waterfall_plot
      • 单个样本
        • shap_values:(n_features,)
        • base_value:float
        • feature_names(可选):list(长度 n_features)
      • ______
        5. shap.decision_plot
        • 单个样本
          • base_value:float
          • shap_values:(n_features,)
        • 多个样本
          • shap_values:(n_samples, n_features)
        • 多分类
          • shap_values:(n_classes, n_samples, n_features)
        • ______
          6. shap.bar_plot
          • shap_values:(n_samples, n_features)(自动聚合)
          • 或 (n_classes, n_samples, n_features)(多分类)
        • ______
          通用规则
          • shap_values 的最后一维必须匹配 features 的特征数(n_features)。
          • feature_names(若有)长度需等于 n_features。
          • 多分类 通常需要按类别拆分 shap_values(3D 数组或列表)

@浙江大学疏锦行

你可能感兴趣的:(python训练营,python)