部分依赖图可视化API

在本教程中,将探讨如何使用PartialDependenceDisplay对象来绘制部分依赖图,而无需重新计算部分依赖。将展示如何绘制部分依赖图,并如何使用可视化API快速自定义图表。

scikit-learn开发者

本文遵循BSD-3-Clause许可证。

导入必要的库

import matplotlib.pyplot as plt import pandas as pd from sklearn.datasets import load_diabetes from sklearn.inspection import PartialDependenceDisplay from sklearn.neural_network import MLPRegressor from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler from sklearn.tree import DecisionTreeRegressor

在糖尿病数据集上训练模型

首先,在糖尿病数据集上训练一个决策树和一个多层感知器(MLP)模型。

diabetes = load_diabetes() X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names) y = diabetes.target tree = DecisionTreeRegressor() mlp = make_pipeline(StandardScaler(), MLPRegressor(hidden_layer_sizes=(100, 100), tol=1e-2, max_iter=500, random_state=0)) tree.fit(X, y) mlp.fit(X, y)

绘制两个特征的部分依赖图

为决策树绘制“年龄”和“体重指数(BMI)”这两个特征的部分依赖曲线。使用from_estimator方法时,预期会绘制两条曲线。

fig, ax = plt.subplots(figsize=(12, 6)) ax.set_title("Decision Tree") tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age", "bmi"], ax=ax)

对于多层感知器,也可以绘制部分依赖曲线。在这种情况下,传递line_kw参数给from_estimator方法,以改变曲线的颜色。

fig, ax = plt.subplots(figsize=(12, 6)) ax.set_title("Multi-layer Perceptron") mlp_disp = PartialDependenceDisplay.from_estimator(mlp, X, ["age", "bmi"], ax=ax, line_kw={"color": "red"})

在同一图表中绘制两个模型的部分依赖图

tree_dispmlp_disp对象包含了重新创建部分依赖曲线所需的所有计算信息。这意味着可以轻松地创建额外的图表,而无需重新计算曲线。

一种绘制曲线的方法是将它们放置在同一个图表中,每个模型的曲线在每一行。首先,创建一个包含两行一列的图表。然后将这两个轴传递给tree_dispmlp_dispplot函数。给定的轴将被绘图函数用来绘制部分依赖图。结果图表将决策树的部分依赖曲线放置在第一行,多层感知器的部分依赖曲线放置在第二行。

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10)) tree_disp.plot(ax=ax1) ax1.set_title("Decision Tree") mlp_disp.plot(ax=ax2, line_kw={"color": "red"}) ax2.set_title("Multi-layer Perceptron")

另一种比较曲线的方法

另一种比较曲线的方法是将它们叠加在一起绘制。在这里,创建一个一行两列的图表。轴作为列表传递到plot函数中,这将在同一个轴上绘制每个模型的部分依赖曲线。轴列表的长度必须等于绘制的图表数量。

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 6)) tree_disp.plot(ax=[ax1, ax2], line_kw={"label": "Decision Tree"}) mlp_disp.plot(ax=[ax1, ax2], line_kw={"label": "Multi-layer Perceptron", "color": "red"}) ax1.legend() ax2.legend()

绘制单个特征的部分依赖图

在这里,在同一轴上绘制单个特征“年龄”的部分依赖曲线。在这种情况下,tree_disp.axes_传递到第二个plot函数中。

tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age"]) mlp_disp = PartialDependenceDisplay.from_estimator(mlp, X, ["age"], ax=tree_disp.axes_, line_kw={"color": "red"})

脚本的总运行时间

  • 部分依赖和个体条件期望图
  • 单调约束
  • 使用KBinsDiscretizer离散化连续特征
  • 多输出决策树回归
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485