Примечание
Перейти к концу, чтобы загрузить весь пример кода. или запустить этот пример в вашем браузере с помощью JupyterLite или Binder
Продвинутая визуализация с использованием частичной зависимости
Объект PartialDependenceDisplay может использоваться для визуализации без необходимости повторного расчёта частичной зависимости. В этом примере показано, как строить графики частичной зависимости и как быстро настраивать график с помощью API визуализации.
Примечание
# Authors: The scikit-learn developers # SPDX-License-Identifier: 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
Обучение моделей на наборе данных по диабету
Сначала мы обучим решающее дерево и многослойный перцептрон на наборе данных по диабету.
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)
Построение графиков частичной зависимости для двух признаков
Мы строим графики частичной зависимости для признаков «возраст» и «ИМТ» (индекс массы тела) для решающего дерева. При наличии двух признаков, from_estimator ожидает построения двух кривых. Здесь функция построения графика размещает сетку из двух графиков, используя пространство, определённое ax .
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_disp и mlp_disp PartialDependenceDisplay содержат всю вычисленную информацию, необходимую для повторного построения графиков частичной зависимости. Это означает, что мы можем легко создавать дополнительные графики без необходимости повторного расчета кривых.
Один из способов построения графиков — размещение их на одном рисунке, с кривыми каждой модели в каждой строке. Сначала создаём рисунок с двумя осями на двух строках и одном столбце. Эти две оси передаются в функции plot функций tree_disp и mlp_disp. Указанные оси будут использованы функцией построения для отображения частичной зависимости. Результирующий график размещает графики частичной зависимости решающего дерева в первой строке, а графики многослойного перцептрона — во второй.
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")

Text(0.5, 1.0, '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()

<matplotlib.legend.Legend object at 0x7656b7241400>
tree_disp.axes_ — это массив NumPy, содержащий оси, используемые для построения графиков частичной зависимости. Это можно передать в mlp_disp для достижения того же эффекта — отображения графиков друг на друге. Кроме того, mlp_disp.figure_ хранит рисунок, что позволяет изменять размер рисунка после вызова plot. В этом случае у tree_disp.axes_ две размерности, поэтому у plot будет отображаться только метка оси y и отметки y на крайнем левом графике.
tree_disp.plot(line_kw={"label": "Decision Tree"})
mlp_disp.plot(
line_kw={"label": "Multi-layer Perceptron", "color": "red"}, ax=tree_disp.axes_
)
tree_disp.figure_.set_size_inches(10, 6)
tree_disp.axes_[0, 0].legend()
tree_disp.axes_[0, 1].legend()
plt.show()

Построение графиков частичной зависимости для одного признака
Здесь мы строим графики частичной зависимости для одного признака, «возраст», на одних и тех же осях. В этом случае, tree_disp.axes_ передаётся во вторую функцию построения.
tree_disp = PartialDependenceDisplay.from_estimator(tree, X, ["age"])
mlp_disp = PartialDependenceDisplay.from_estimator(
mlp, X, ["age"], ax=tree_disp.axes_, line_kw={"color": "red"}
)

Общее время выполнения скрипта: (0 минут 2.876 секунды)
Связанные примеры
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/auto_examples/miscellaneous/plot_partial_dependence_visualization_api.html