可视化#
支持interpret的可视化根据它们所处的环境使用不同的渲染器。在大多数情况下,该包会检测它所在的环境并使用适当的渲染器。但有时你可能希望强制选择其中一个。
Dash 渲染器
Dash渲染器用于本地环境,例如在您的笔记本电脑上运行Jupyter笔记本。它在第一次被interpret调用时,会在一个单独的进程中运行一个由Apache Flask支持的Dash服务器。
这提供了对笔记本中嵌入的可视化以及完整仪表板的访问。然而,由于需要实时运行的Flask服务器,它无法在离线笔记本中渲染。
查看源代码以了解其配置 这里.
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来初始化两者。
- Parameters:
app_runner – 一个AppRunner实例。
- classmethod from_address(addr=None, base_url=None, use_relative_links=False)#
初始化一个新的AppRunner以及提供者。
- Parameters:
addr – 一个元组,包含 (ip_addr, port)。
base_url – 基础URL,这在代理后面时非常有用。
use_relative_links – 渲染页面时使用相对链接而不是完整的URI。
内联渲染器
内联渲染器用于云环境中访问Flask服务器并不总是可用的情况。在大多数配置中,它会在每个笔记本单元格中注入JavaScript,包括捆绑包。
这不支持完整的仪表板,但它确实支持离线功能。
查看源代码以了解其配置 这里.
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)#
提供通过JavaScript在Jupyter单元格内调用的渲染功能。
初始化类。
- Parameters:
detected_envs – 在interpret.utils.environment中定义的目标环境。
js_url – 如果定义了,将从给定的URL加载用于解释内联的JavaScript包。
交互性
可视化使用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()In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
ExplainableBoostingClassifier()
ebm_global = ebm.explain_global()
show(ebm_global)