Примечание
Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью JupyterLite или Binder.
Расширенное построение графиков частичной зависимости
Объект PartialDependenceDisplay можно использовать для построения графиков без повторного вычисления частичной зависимости. В этом примере мы покажем, как строить графики частичной зависимости и быстро настраивать их с помощью API визуализации.
Примечание
См. также ROC-кривая с 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)
Построение графиков частичной зависимости для двух признаков
Мы строим графики частичной зависимости для признаков «age» и «bmi» (индекс массы тела) для дерева решений. При использовании двух признаков 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)

Для многослойного перцептрона также можно построить графики частичной зависимости. В этом случае в from_estimator передаётся line_kw, чтобы изменить цвет кривой.
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 0x784116e5f230>
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.614 секунды)
Похожие примеры
© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/auto_examples/inspection/plot_partial_dependence_visualization_api.html