shap.explainers.other.LimeTabular
- class shap.explainers.other.LimeTabular(model, data, mode='classification')
简单地将 lime.lime_tabular.LimeTabularExplainer 封装到通用的 shap 接口中。
- 参数:
- model函数或 iml.Model
用户提供的函数,它接受样本矩阵(# 样本 x # 特征)并计算这些样本的模型输出。输出可以是向量(# 样本)或矩阵(# 样本 x # 模型输出)。
- datanumpy.array
背景数据集。
- mode“classification” 或 “regression”
控制 LIME 表格模式。
- __init__(model, data, mode='classification')
为传递的模型构建一个新的解释器。
- 参数:
- model对象或函数
用户提供的函数或模型对象,它接受样本数据集并计算这些样本的模型输出。
- masker函数、numpy.array、pandas.DataFrame、tokenizer、None,或每个模型输入的这些列表
用于“屏蔽”隐藏特征的函数,形式为 masked_args = masker(*model_args, mask=mask)。它接受与模型相同形式的输入,但仅针对具有二进制掩码的单个样本,然后返回屏蔽样本的迭代器。这些屏蔽样本将随后使用模型函数进行评估,并对输出进行平均。作为 SHAP 使用的标准屏蔽的快捷方式,您可以传递背景数据矩阵而不是函数,该矩阵将用于屏蔽。特定领域的屏蔽函数在 shap 中可用,例如图像的 shap.ImageMasker 和文本的 shap.TokenMasker。除了确定如何替换隐藏特征外,masker 还可以约束用于解释模型的合作博弈的规则。例如,shap.TabularMasker(data, hclustering=”correlation”) 将强制执行博弈的联盟的层次聚类(在这种特殊情况下,归因被称为 Owen 值)。
- link函数
链接函数用于在模型输出单元和 SHAP 值单元之间进行映射。默认情况下,它是 shap.links.identity,但 shap.links.logit 可能很有用,以便在概率单位中计算期望,而解释保持在(更自然地可加的)对数几率单位中。有关链接函数如何工作的更多详细信息,请参阅广义线性模型的链接函数的任何概述。
- algorithm“auto”、“permutation”、“partition”、“tree” 或 “linear”
用于估计 Shapley 值的算法。可以使用许多不同的算法来估计 Shapley 值(以及约束博弈的相关值),这些算法各有优缺点,并且在不同的情况下是首选的。默认情况下,“auto” 选项尝试根据传递的模型和 masker 做出最佳选择,但始终可以通过传递特定算法的名称来覆盖此选择。使用的算法类型将决定此构造函数返回的子类对象的类型,如果您喜欢或需要更精细地控制其选项,也可以直接构建这些子类。
- output_namesNone 或字符串列表
模型输出的名称。例如,如果模型是图像分类器,则 output_names 将是所有输出类别的名称。此参数是可选的。当 output_names 为 None 时,此解释器生成的 Explanation 对象将没有任何 output_names,这可能会影响下游绘图。
- seed: None 或 int
用于重现性的种子
方法
__init__
(model, data[, mode])为传递的模型构建一个新的解释器。
attributions
(X[, nsamples, num_features])explain_row
(*row_args, max_evals, ...)解释单行并返回元组 (row_values, row_expected_values, row_mask_shapes, main_effects)。
load
(in_file[, model_loader, masker_loader, ...])从给定的文件流加载 Explainer。
save
(out_file[, model_saver, masker_saver])将解释器写入给定的文件流。
supports_model_with_masker
(model, masker)确定此解释器是否可以处理给定的模型。
- explain_row(*row_args, max_evals, main_effects, error_bounds, outputs, silent, **kwargs)
解释单行并返回元组 (row_values, row_expected_values, row_mask_shapes, main_effects)。
这是一个抽象方法,旨在由每个子类实现。
- 返回:
- 元组
一个元组 (row_values, row_expected_values, row_mask_shapes),其中 row_values 是每个样本的归因值数组,row_expected_values 是一个数组(或单个值),表示每个样本的模型期望值(除非存在固定输入,否则所有样本都相同,例如解释损失时的标签),而 row_mask_shapes 是所有输入形状的列表(因为 row_values 始终是扁平化的),
- 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)
从给定的文件流加载 Explainer。
- 参数:
- in_file要从中加载对象的文件流。
- save(out_file, model_saver='.save', masker_saver='.save')
将解释器写入给定的文件流。
- static supports_model_with_masker(model, masker)
确定此解释器是否可以处理给定的模型。
这是一个抽象静态方法,旨在由每个子类实现。