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"]])。

colorstring 或 shap.Explanation, 可选

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

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

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

histbool

是否在 x 轴上显示浅色直方图以显示数据的密度。请注意,直方图已标准化,这样如果所有点都在单个 bin 中,则该 bin 将跨越绘图的整个高度。默认为 True

x_jitter‘auto’ 或 float

通过指定 0 到 1 之间的浮点数,向特征值添加随机抖动。当特征是离散的时,可以提高绘图的可读性。默认情况下,x_jitter 根据对分类特征的自动检测来选择。

title: str, 可选

绘图标题。

alphafloat

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

xmin, xmax, ymin, ymaxfloat, string, 聚合 Explanation 或 None

所需的轴限制。可以是 float 以指定固定限制。

它可以是 "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 时返回。

示例

请参阅 散点图示例