shap.PermutationExplainer

class shap.PermutationExplainer(model, masker, link=CPUDispatcher(<function identity>), feature_names=None, linearize_link=True, seed=None, **call_args)[源代码]

此方法通过遍历输入的排列组合来近似计算Shapley值。

这是一个模型无关的解释器,通过在正向和反向(对立采样)完全遍历所有特征的排列来保证局部准确性(可加性)。如果我们这样做一次,那么我们可以得到具有高达二阶交互效应模型的精确SHAP值。我们可以通过多次随机排列来多次迭代,以获得具有更高阶交互效应模型的更好SHAP值估计。这种顺序排列的公式还允许轻松重用模型评估,并在特征的背景值与当前输入值相同时有效避免评估模型。我们还可以通过分区树来处理分层数据结构,这是KernalExplainer或SamplingExplainer目前未实现的功能。

__init__(model, masker, link=CPUDispatcher(<function identity>), feature_names=None, linearize_link=True, seed=None, **call_args)[源代码]

使用给定的掩码对象为给定的模型构建一个 explainers.Permutation 对象。

参数:
模型函数

一个可调用的Python对象,它在接受一组输入数据样本时执行模型。

掩码器函数 或 numpy.array 或 pandas.DataFrame

用于“掩盖”隐藏特征的可调用Python对象,形式为 masker(binary_mask, x)。它接受一个输入样本和一个二进制掩码,并返回一个掩码样本矩阵。这些掩码样本通过模型函数进行评估,然后对输出进行平均。作为SHAP标准掩码使用的快捷方式,您可以传递一个背景数据矩阵而不是函数,该矩阵将用于掩码。要使用聚类游戏结构,您可以传递一个 shap.maskers.Tabular(data, clustering="correlation") 对象。

种子: None 或 int

可重复性的种子

**调用参数__call__ 方法的有效参数

这些参数被保存并传递给 __call__ 方法,作为这些参数的新默认值。

方法

__init__(model, masker[, link, ...])

使用给定的掩码对象为给定的模型构建一个 explainers.Permutation 对象。

explain_row(*row_args, max_evals, ...)

解释单行并返回元组 (row_values, row_expected_values, row_mask_shapes)。

load(in_file[, model_loader, masker_loader, ...])

从给定的文件流中加载一个解释器。

save(out_file[, model_saver, masker_saver])

将解释器写入给定的文件流。

shap_values(X[, npermutations, ...])

用于估计一组样本的SHAP值的遗留接口。

supports_model_with_masker(model, masker)

确定此解释器是否可以处理给定的模型。

explain_row(*row_args, max_evals, main_effects, error_bounds, batch_size, outputs, silent)[源代码]

解释单行并返回元组 (row_values, row_expected_values, row_mask_shapes)。

classmethod load(in_file, model_loader=<bound method Model.load of <class 'shap.models._model.Model'>>, masker_loader=<bound method Serializable.load of <class 'shap.maskers._masker.Masker'>>, instantiate=True)

从给定的文件流中加载一个解释器。

参数:
in_file用于加载对象的文件流。
save(out_file, model_saver='.save', masker_saver='.save')

将解释器写入给定的文件流。

shap_values(X, npermutations=10, main_effects=False, error_bounds=False, batch_evals=True, silent=False)[源代码]

用于估计一组样本的SHAP值的遗留接口。

参数:
Xnumpy.array 或 pandas.DataFrame 或任何 scipy.sparse 矩阵

一个样本矩阵(样本数量 x 特征数量),用于解释模型的输出。

npermutations整数

循环遍历所有特征的次数,在每一步重新评估模型。每个循环在 (# 背景数据样本) 行的数据矩阵上评估模型函数 2 * (# 特征 + 1) 次。当 PermutationExplainer 可以避免评估模型时,这是一个例外,因为特征的值在 X 和背景数据集中是相同的(这在稀疏特征的情况下很常见)。

返回:
数组或列表

对于具有单一输出的模型,这将返回一个SHAP值矩阵(#样本 x #特征)。每一行的总和等于该样本的模型输出与模型输出的期望值(存储为解释器的expected_value属性)之间的差异。对于具有向量输出的模型,这将返回一个这样的矩阵列表,每个输出对应一个矩阵。

static supports_model_with_masker(model, masker)

确定此解释器是否可以处理给定的模型。

这是一个抽象静态方法,旨在由每个子类实现。