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
时返回。
示例
请参阅 散点图示例。