可视化#

interpret 提供支持的可视化会根据其所在的环境使用不同的渲染器。在大多数情况下,软件包会检测其所在的环境类型并使用合适的渲染器。但在某些时候,您可能想要强制选择其中一个。

Dash 渲染器

Dash 渲染器用于本地环境,例如在笔记本电脑上运行 Jupyter notebook。当首次被 interpret 调用时,它会在单独的进程中运行一个由 Apache Flask 支持的 Dash 服务器。

这提供了在 notebook 中嵌入式可视化和完整仪表板的访问权限。然而,由于需要一个活跃的 Flask 服务器,它无法在离线 notebook 中渲染。

请参阅此处的源代码以了解其配置。

from interpret import set_visualize_provider
from interpret.provider import DashProvider
set_visualize_provider(DashProvider.from_address(('127.0.0.1', 7001)))
class interpret.provider.DashProvider(app_runner)#

通过 Plotly 的 Dash 提供渲染。

这适用于可以暴露 HTTP(s) 端口的环境。

初始化类。

这需要一个实例化的 AppRunner,请改用 .from_address 来初始化两者。

参数:

app_runner – 一个 AppRunner 实例。

classmethod from_address(addr=None, base_url=None, use_relative_links=False)#

与 provider 一起初始化新的 AppRunner

参数:
  • addr – 一个元组,格式为 (ip_addr, port)。

  • base_url – 基础 URL,在代理后面时有用。

  • use_relative_links – 渲染页面使用相对链接而非完整 URI。

内联渲染器

内联渲染器用于云环境,这些环境下通常无法访问 Flask 服务器。在大多数配置中,它会在每个 notebook 单元中注入 JavaScript,包括 bundle。

这不支持完整仪表板,但支持离线使用。

请参阅此处的源代码以了解其配置。

from interpret import set_visualize_provider
from interpret.provider import InlineProvider
set_visualize_provider(InlineProvider())
class interpret.provider.InlineProvider(detected_envs=None, js_url=None)#

通过在 Jupyter 单元中调用的 JavaScript 提供渲染。

初始化类。

参数:
  • detected_envs – 目标环境,定义于 interpret.utils.environment

  • js_url – 如果定义,将从给定 URL 加载 interpret-inline 的 JavaScript bundle。

交互性

可视化消费 Interpret API,并负责显示解释和底层的渲染基础设施。

使用 show 方法可视化

Interpret 暴露了一个顶层方法 show,它作为渲染解释可视化的接口。根据提供的参数,这可以生成下拉小部件或仪表板。

显示单个解释

对于基本用例,最好一次显示一个解释。渲染后的小部件将提供一个下拉菜单来选择可视化。例如,对于全局解释,它将提供一个概览,以及每个特征的图表,如下面代码所示

from interpret import set_visualize_provider
from interpret.provider import InlineProvider
set_visualize_provider(InlineProvider())
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

from interpret.glassbox import ExplainableBoostingClassifier
from interpret import show

df = pd.read_csv(
    "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data",
    header=None)
df.columns = [
    "Age", "WorkClass", "fnlwgt", "Education", "EducationNum",
    "MaritalStatus", "Occupation", "Relationship", "Race", "Gender",
    "CapitalGain", "CapitalLoss", "HoursPerWeek", "NativeCountry", "Income"
]
X = df.iloc[:, :-1]
y = (df.iloc[:, -1] == " >50K").astype(int)

seed = 42
np.random.seed(seed)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=seed)

ebm = ExplainableBoostingClassifier()
ebm.fit(X_train, y_train)
ExplainableBoostingClassifier()
在 Jupyter 环境中,请重新运行此单元格以显示 HTML 表示或信任 notebook。
在 GitHub 上,HTML 表示无法渲染,请尝试使用 nbviewer.org 加载此页面。
ebm_global = ebm.explain_global()
show(ebm_global)




显示解释中的特定可视化

假设您正在寻找解释中的某个特定可视化,那么您可以使用一个键作为后续函数参数来指定它。

show(ebm_global, "Age")




显示多个解释进行比较

如果您在本地环境(例如在笔记本电脑上运行 Python)中运行,那么 show 可以公开一个用于比较的仪表板,可以通过以下方式调用(在第一个参数中提供解释列表)

from interpret.glassbox import LogisticRegression

# We have to transform categorical variables to use Logistic Regression
X_train = pd.get_dummies(X_train, prefix_sep='.').astype(float)

lr = LogisticRegression(random_state=seed, penalty='l1', solver='liblinear')
lr.fit(X_train, y_train)

lr_global = lr.explain_global()
show([ebm_global, lr_global])

Interpret API

该 API 负责标准化 ML 可解释性解释器和解释,为用户和开发者提供一致的接口。为了支持这一点,它还提供了支持可视化和数据访问的基础顶层方法。

解释器 是透明箱或黑箱算法,它们会产生一个解释,这是一个可用于可视化或进一步数据处理的产物。

解释器

解释器将通过其 .explain_* 方法产生解释。这些解释通常提供对模型全局行为或局部个体预测的理解(分别为 .explain_global.explain_local)。

class interpret.api.base.ExplainerMixin#
一个计算解释的对象。

这是 InterpretML 所需的契约。

变量:
  • available_explanations – 包含以下字符串的列表 - “perf”、“data”、“local”、“global”。

  • explainer_type – 以下字符串之一 - “blackbox”、“model”、“specific”、“data”、“perf”。

解释

解释是一个自包含的对象,有助于理解其目标模型的行为或一组个体预测。解释应通过 .visualize 方法提供可视化访问,通过 .data 方法进行数据处理。从参数方面看,.visualize.data 应具有相同函数签名。

class interpret.api.base.ExplanationMixin#
调用 Explainer 的 explain_* 方法的结果。负责提供数据和/或可视化。

这是 InterpretML 所需的契约。

变量:
  • explanation_type – 解释器的可用解释类型之一的字符串。应为 “perf”、“data”、“local”、“global” 之一。

  • name – 用于显示的解释名称的字符串。

  • selector – 描述数据的可选 dataframe。dataframe 的每一行对应一个相应的数据项。

abstract data(key=None)#

提供特定的解释数据。

参数:

key – 引用特定数据项的数字/字符串。

返回:

一个可序列化的字典。

abstract visualize(key=None)#

提供交互式可视化。

参数:

key – 用于索引内部对象以进行子图绘制的标量或列表。如果请求整体可视化,则传入 None。

返回:

一个 Plotly 图形、字符串形式的 html 或一个 Dash 组件。

Show 方法

show 方法是一个通用函数,用于为参数中提供的任何解释提供可视化。在实现上,它将提供一个可视化平台(即仪表板或小部件),并根据 .visualize 调用提供解释的可视化。