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)
在此处查看更多 决策图示例。