shap.plots.decision
- shap.plots.decision(base_value: float | ndarray, shap_values: ndarray, features: ndarray | Series | DataFrame | list | None = None, feature_names=None, feature_order='importance', feature_display_range=None, highlight=None, link='identity', plot_color=None, axis_color='#333333', y_demarc_color='#333333', alpha=None, color_bar=True, auto_size_plot=True, title=None, xlim=None, show=True, return_objects=False, ignore_warnings=False, new_base_value=None, legend_labels=None, legend_location='best') DecisionPlotResult | None
- 使用累积 SHAP 值可视化模型决策。 - 每条绘制的线解释一个单一的模型预测。如果绘制的是单个预测,特征值将被打印在图中(如果提供)。如果同时绘制多个预测,则不会打印特征值。同时绘制过多的预测会使图表难以辨认。 - 参数:
- base_valuefloat 或 numpy.ndarray
- 这是特征贡献的起始参考值。通常,这是 - explainer.expected_value。
- shap_valuesnumpy.ndarray
- 来自 - explainer.shap_values()的 SHAP 值矩阵(# 特征)或(# 样本 x # 特征)。或来自- explainer.shap_interaction_values()的 SHAP 交互值立方体(# 样本 x # 特征 x # 特征)。
- featuresnumpy.array 或 pandas.Series 或 pandas.DataFrame 或 numpy.ndarray 或 list
- 特征值矩阵(# 特征)或(# 样本 x # 特征)。这提供了所有特征的值,以及可选的特征名称。 
- feature_nameslist 或 numpy.ndarray
- 特征名称列表(# 特征)。如果为 - None,且- features参数提供了 Pandas 对象,则可以从中派生名称。否则,将生成数字特征名称。
- feature_orderstr 或 None 或 list 或 numpy.ndarray
- 可以是“importance”(默认值)、“hclust”(层次聚类)、 - None,或一个索引列表/数组。
- feature_display_range: slice 或 range
- 按 - feature_order对特征进行排序后要绘制的特征切片或范围。步长为 1 或- None将以升序显示特征。步长为 -1 将以降序显示特征。如果- feature_display_range=None,则使用- slice(-1, -21, -1)(即以降序显示最后 20 个特征)。如果- shap_values包含交互值,特征数量会自动扩展以包括所有可能的交互:N(N + 1)/2,其中 N =- shap_values.shape[1]。
- highlightAny
- 指定哪些观测值以不同的线条样式绘制。支持所有 numpy 索引方法。例如,整数索引列表或布尔数组。 
- linkstr
- 使用 “identity” 或 “logit” 来指定 x 轴使用的转换。 “logit” 链接将对数几率(log-odds)转换为概率。 
- plot_colorstr 或 matplotlib.colors.ColorMap
- 用于绘制图线的颜色光谱。如果为 - str,则假定为已注册的 matplotlib 颜色名称。
- axis_colorstr 或 int
- 用于绘制图表坐标轴的颜色。 
- y_demarc_colorstr 或 int
- 用于在 y 轴上绘制特征分界线的颜色。 
- alphafloat
- 用于绘制图线的 Alpha 混合值,范围在 [0, 1] 之间。 
- color_barbool
- 是否绘制颜色条(图例)。 
- auto_size_plotbool
- 是否自动调整 matplotlib 图的大小以适应显示的特征数量。如果为 - False,请在调用此函数之前使用 matplotlib 指定图的大小。
- titlestr
- 图表的标题。 
- xlim: tuple[float, float]
- x 轴的范围(例如 - (-1.0, 1.0))。如果未指定,当- link="identity"时,界限由以 base_value 为中心的最大/最小预测值确定。当- link="logit"时,x 轴范围为- (0, 1),中心在 0.5。- xlim的值不会被- link函数转换。提供此参数是为了简化在相同尺度上生成多个图表以进行比较。
- showbool
- 在返回前是否调用 - matplotlib.pyplot.show()。将此设置为- False允许在创建图表后对其进行进一步的自定义。
- return_objectsbool
- 是否返回一个包含各种绘图特性的 - DecisionPlotResult对象。这可用于使用相同的特征排序和尺度生成多个决策图。
- ignore_warningsbool
- 一次性绘制大量数据点或过多特征可能会很慢,或者可能创建非常大的图表。将此参数设置为 - True可覆盖阻止绘制大量数据的硬编码限制。
- new_base_valuefloat
- SHAP 值是相对于一个基准值的。默认情况下,这个基准值是模型原始预测的期望值。使用 - new_base_value可以将基准值移动到任意值(例如,二元分类任务的截断点)。
- legend_labelslist of str
- 图例标签列表。如果为 - None,则不显示图例。
- legend_locationstr
- 图例位置。可以是 “best”、“upper right”、“upper left”、“lower left”、“lower right”、“right”、“center left”、“center right”、“lower center”、“upper center”、“center” 中的任意一个。 
 
- 返回:
- DecisionPlotResult 或 None
- 如果 - return_objects=True,则返回一个- DecisionPlotResult对象。否则返回- None(默认值)。
 
 - 示例 - 使用相同的特征顺序和 x 轴绘制两个决策图。 - >>> range1, range2 = range(20), range(20, 40) >>> r = decision_plot(base, shap_values[range1], features[range1], return_objects=True) >>> decision_plot(base, shap_values[range2], features[range2], feature_order=r.feature_idx, xlim=r.xlim) - 在此处查看更多决策图示例。