shap.plots.scatter

shap.plots.scatter(shap_values: ~shap._explanation.Explanation, color: str | ~shap._explanation.Explanation | None = '#1E88E5', hist: bool = True, axis_color='#333333', cmap=<matplotlib.colors.LinearSegmentedColormap object>, dot_size=16, x_jitter: float | ~typing.Literal['auto'] = 'auto', alpha: float = 1.0, title: str | None = None, xmin: ~shap._explanation.Explanation | str | float | None = None, xmax: ~shap._explanation.Explanation | str | float | None = None, ymin: ~shap._explanation.Explanation | str | float | None = None, ymax: ~shap._explanation.Explanation | str | float | None = None, overlay: dict[str, ~typing.Any] | None = None, ax: ~matplotlib.axes._axes.Axes | None = None, ylabel: str = 'SHAP value', show: bool = True)

创建一个 SHAP 依赖散点图,可选择按交互特征着色。

该图在 x 轴上绘制特征值,在 y 轴上绘制同一特征的 SHAP 值。这显示了模型如何依赖于给定特征,并且是经典局部依赖图的更丰富扩展。数据点的垂直离散度表示交互效应。y 轴上的灰色刻度线是特征值为 NaN 的数据点。

请注意,如果您想更改显示的数据,可以更新 shap_values.display_features 属性,之后它将用于绘图,而不是 shap_values.data

参数:
shap_valuesshap.Explanation

通常是 Explanation 对象的一列(即 shap_values[:, "Feature A"])。

或者,传递多列来创建多个子图(即 shap_values[:, ["Feature A", "Feature B"]])。

color字符串或 shap.Explanation,可选

如何为散点图的点着色。这可以是一个固定的颜色字符串,也可以是一个 Explanation 对象。

如果它是一个 Explanation 对象,那么散点图的点将根据似乎与 shap_values 参数给出的特征具有最强交互效应的特征进行着色。这是使用 shap.utils.approximate_interactions() 计算的。

如果只传递 Explanation 对象的单列,则该特征列将用于为数据点着色。

hist布尔值

是否在 x 轴上显示一个浅色直方图以显示数据密度。请注意,直方图经过归一化,如果所有点都在一个箱体中,则该箱体将占据图表的整个高度。默认为 True

x_jitter‘auto’ 或浮点数

通过指定 0 到 1 之间的浮点数,为特征值添加随机抖动。当特征是离散的时,这可能会增加图表的可读性。默认情况下,x_jitter 的值是基于对分类特征的自动检测来选择的。

title: str,可选

图表标题。

alphafloat

数据点的透明度(介于 0 和 1 之间)。在使用大数据集时,这对于显示数据点的密度很有用。

xmin, xmax, ymin, ymax浮点数、字符串、聚合的 Explanation 或 None

期望的坐标轴限制。可以是一个浮点数来指定固定限制。

可以是一个格式为 "percentile(float)" 的字符串,表示特征值的百分位数。

它也可以是 Explanation 对象单列的聚合列,例如 explanation[:, "feature_name"].percentile(20)

overlay: dict,可选

可选字典,包含最多三个要作为线图叠加的额外曲线。

该字典将曲线名称映射到一个 (xvalues, yvalues) 对的列表,其中每个要绘制的特征都有一对。

axmatplotlib Axes,可选

可选地指定一个现有的 matplotlib.axes.Axes 对象,图表将被绘制到该对象中。

仅在绘制单个特征时支持。

showbool

在返回前是否调用 matplotlib.pyplot.show()

将其设置为 False 允许在图表创建后对其进行进一步的自定义。

返回:
axmatplotlib Axes 对象

返回绘制了图表的 Axes 对象。仅在 show=False 时返回。

示例

请参阅散点图示例