机器学习模型的偏依赖图可视化

机器学习中,偏依赖图是一种可视化工具,用于展示模型预测结果对特定特征的依赖程度。本文将介绍如何使用Python的matplotlib和sklearn库来绘制决策树多层感知器(MLP)模型的偏依赖图,并通过可视化API进行快速定制。

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

首先,使用糖尿病数据集来训练一个决策树和一个多层感知器模型。以下是使用Python代码进行模型训练的过程。

from sklearn.datasets import load_diabetes from sklearn.tree import DecisionTreeRegressor from sklearn.neural_network import MLPRegressor from sklearn.pipeline import make_pipeline from sklearn.preprocessing import StandardScaler # 加载数据集 diabetes = load_diabetes() X = pd.DataFrame(diabetes.data, columns=diabetes.feature_names) y = diabetes.target # 训练决策树模型 tree = DecisionTreeRegressor() tree.fit(X, y) # 训练多层感知器模型 mlp = make_pipeline(StandardScaler(), MLPRegressor(hidden_layer_sizes=(100, 100), tol=1e-2, max_iter=500, random_state=0)) mlp.fit(X, y)

绘制偏依赖图

接下来,将为决策树多层感知器模型绘制偏依赖图。将关注“年龄”和“体重指数(BMI)”这两个特征。

import matplotlib.pyplot as plt from sklearn.inspection import PartialDependenceDisplay # 绘制决策树的偏依赖图 fig, ax = plt.subplots(figsize=(12, 6)) ax.set_title("决策树") tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age", "bmi"], ax=ax) # 绘制多层感知器的偏依赖图,设置曲线颜色为红色 fig, ax = plt.subplots(figsize=(12, 6)) ax.set_title("多层感知器") mlp_disp = PartialDependenceDisplay.from_estimator(mlp, X, ["age", "bmi"], ax=ax, line_kw={"color": "red"})

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

可以将两个模型的偏依赖图绘制在同一图表中,以便进行比较。以下是如何在同一图表中绘制两个模型的偏依赖图的代码示例。

# 创建一个包含两个子图的图表 fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10)) # 在第一个子图中绘制决策树的偏依赖图 tree_disp.plot(ax=ax1) ax1.set_title("决策树") # 在第二个子图中绘制多层感知器的偏依赖图 mlp_disp.plot(ax=ax2, line_kw={"color": "red"}) ax2.set_title("多层感知器")

绘制单个特征的偏依赖图

除了绘制两个特征的偏依赖图外,还可以绘制单个特征的偏依赖图。以下是如何绘制单个特征“年龄”的偏依赖图的代码示例。

# 绘制单个特征“年龄”的偏依赖图 tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age"]) mlp_disp = PartialDependenceDisplay.from_estimator(mlp, X, ["age"], ax=tree_disp.axes_, line_kw={"color": "red"})
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485