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,如果提供了 Pandas 对象,则名称可以从 features 参数派生。否则,将生成数字特征名称。

feature_orderstr 或 None 或 list 或 numpy.ndarray

可以是 “importance”(默认值)、“hclust”(层次聚类)、None 或索引列表/数组。

feature_display_range: slice 或 range

在通过 feature_order 对特征进行排序后要绘制的特征的 slice 或 range。步长为 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” 链接将对数几率转换为概率。

plot_colorstr 或 matplotlib.colors.ColorMap

用于绘制绘图线的颜色谱。如果为 str,则假定为已注册的 matplotlib 颜色名称。

axis_colorstr 或 int

用于绘制绘图轴的颜色。

y_demarc_colorstr 或 int

用于在 y 轴上绘制特征分界线的颜色。

alphafloat

用于绘制绘图线的 [0, 1] 中的 Alpha 混合值。

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_labelsstr 列表

图例标签列表。如果为 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)

在此处查看更多 决策图示例