Python编程学习第14天打卡记录

今日作业偏思考类型,有一定难度

1.  参考上述文档补全剩余的几个图

2.  尝试确定一下shap各个绘图函数对于每一个参数的尺寸要求,如shap.force_plot力图中的数据需要满足什么形状?

3.  确定分类问题和回归问题的数据如何才能满足尺寸,分类采取信贷数据集,回归采取单车数据集。

1.

决策图

import shap
shap.decision_plot(
    base_value=explainer.expected_value,  # 基线值
    shap_values=shap_values[0, :],         # 单个样本的SHAP值
    features=X_test.iloc[0, :],           # 对应的特征值
    feature_names=X_test.columns,         # 特征名称
    title="预测路径示例"
)

瀑布图

shap.waterfall_plot(
    explainer.expected_value,  # 基线值
    shap_values[0],            # 单个样本的SHAP值(形状为(n_features,))
    max_display=10             # 显示前10个特征
)

依赖图

shap.dependence_plot(
    feature="年龄",          # 分析的特征
    shap_values=shap_values, # 所有样本的SHAP值
    features=X_test,         # 所有样本的特征数据
    interaction_index="收入" # 可选,分析与另一个特征的交互
)

 图像摘要图

# 假设处理图像分类问题,输入数据形状为 (100, 28, 28, 1)
shap.image_plot(
    shap_values=shap_values[0],  # 单个样本的SHAP值
    -X_test[0],                   # 对应的原始图像数据(负号用于热力图显示)
    feature_names=X_test.columns # 可选,特征名称
)

 多输出决策图

shap.multioutput_decision_plot(
    class_id=0,                  # 选择第0个输出目标
    base_values=explainer.expected_value,
    shap_values=shap_values,
    features=X_test,
    feature_order="importance"    # 按特征重要性排序
)

 2.

(1) shap.force_plot(力图)

  • 参数形状要求:

  • shap_values:形状为 (n_samples, n_features) 的二维数组。

  • 每一行对应一个样本的 SHAP 值(每个特征对预测结果的影响)。

  • data:形状为 (n_samples, n_features) 的二维数组。

  • 每一行是原始数据的特征值(与 shap_values 对应)。

  • features:特征名称列表(长度为 n_features)。

  • (2) shap.summary_plot(摘要图)

  • 参数形状要求:

  • shap_values:形状为 (n_samples, n_features) 的二维数组。

  • features:形状为 (n_samples, n_features) 的二维数据或 DataFrame。

  • (3) shap.decision_plot(决策图)

  • 参数形状要求:

  • base_values:标量或一维数组(长度为 n_samples)。

  • shap_values:形状为 (n_samples, n_features) 的二维数组。

  • features:形状为 (n_samples, n_features) 的二维数据或 DataFrame。

  • (4) shap.waterfall_plot(瀑布图)

  • 参数形状要求:

  • shap_values:形状为 (n_features + 1,) 的一维数组(包含基线值和特征贡献)。

  • max_display:可选参数,控制显示的特征数量。

  • (5) shap.dependence_plot(依赖图)

  • 参数形状要求:

  • shap_values:形状为 (n_samples, n_features) 的二维数组。

  • features:形状为 (n_samples, n_features) 的二维数据或 DataFrame。

  • feature:要分析的特征的索引或名称(单个特征)。

  •  3.

    分类问题(信贷数据集)

    对于分类问题,数据集通常包含特征和标签。以信贷数据集为例:

  • 特征矩阵:应为二维数组,形状为 (n_samples, n_features),其中 n_samples 是样本数量,n_features 是特征数量。

  • 标签:应为一维数组,形状为 (n_samples,),表示每个样本的类别(例如,0 或 1)。

  • 确保特征矩阵和标签的样本数量一致。

    回归问题(单车数据集)

    对于回归问题,数据集同样包含特征和目标值。以单车数据集为例:

  • 特征矩阵:应为二维数组,形状为 (n_samples, n_features),其中 n_samples 是样本数量,n_features 是特征数量。

  • 目标值:应为一维数组,形状为 (n_samples,),表示每个样本的目标值(例如,单车租赁数量)。

  • 同样,确保特征矩阵和目标值的样本数量一致。

     @浙大疏锦行

    作者:冰轮a

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python编程学习第14天打卡记录

    发表回复