Spec-Zone.ru › scikit-learn

Примечание

Перейти в конец для скачивания полного кода примера или для запуска этого примера в вашем браузере через JupyterLite или Binder

Визуализация с объектами отображения

В этом примере мы создадим объекты отображения, ConfusionMatrixDisplay, RocCurveDisplay и PrecisionRecallDisplay непосредственно из соответствующих метрик. Это альтернатива использованию соответствующих функций построения графиков, когда предсказания модели уже вычислены или вычисление является дорогостоящим. Обратите внимание, что это расширенное использование, и в общем случае мы рекомендуем использовать соответствующие функции построения графиков.

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

Загрузка данных и обучение модели

Для этого примера мы загрузим набор данных о центре крови из OpenML. Это задача бинарной классификации, где целевая переменная — факт сдачи крови человеком. Затем данные делятся на обучающую и тестовую выборки, и на обучающей выборке обучается логистическая регрессия.

from sklearn.datasets import fetch_openml
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, y = fetch_openml(data_id=1464, return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y)

clf = make_pipeline(StandardScaler(), LogisticRegression(random_state=0))
clf.fit(X_train, y_train)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('logisticregression', LogisticRegression(random_state=0))])
В среде Jupyter, пожалуйста, перезапустите ячейку, чтобы отобразить HTML-представление, или доверьтесь блокноту.
На GitHub HTML-представление не может быть отображено, пожалуйста, попробуйте загрузить эту страницу с nbviewer.org.
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('logisticregression', LogisticRegression(random_state=0))])
StandardScaler()
LogisticRegression(random_state=0)


Создание ConfusionMatrixDisplay

Используя обученную модель, мы вычисляем предсказания модели на тестовой выборке. Эти предсказания используются для вычисления матрицы ошибок, которая отображается с помощью ConfusionMatrixDisplay

from sklearn.metrics import ConfusionMatrixDisplay, confusion_matrix

y_pred = clf.predict(X_test)
cm = confusion_matrix(y_test, y_pred)

cm_display = ConfusionMatrixDisplay(cm).plot()
plot display object visualization

Создание RocCurveDisplay

Для построения ROC-кривой необходимы либо вероятности, либо значения решений без порогов от оценщика. Поскольку логистическая регрессия предоставляет функцию принятия решений, мы будем использовать ее для построения ROC-кривой:

from sklearn.metrics import RocCurveDisplay, roc_curve

y_score = clf.decision_function(X_test)

fpr, tpr, _ = roc_curve(y_test, y_score, pos_label=clf.classes_[1])
roc_display = RocCurveDisplay(fpr=fpr, tpr=tpr).plot()
plot display object visualization
/home/circleci/project/sklearn/metrics/_plot/roc_curve.py:189: UserWarning:

No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.

Создание PrecisionRecallDisplay

Аналогично, кривую точности-полноты можно построить с помощью y_score из предыдущих разделов.

from sklearn.metrics import PrecisionRecallDisplay, precision_recall_curve

prec, recall, _ = precision_recall_curve(y_test, y_score, pos_label=clf.classes_[1])
pr_display = PrecisionRecallDisplay(precision=prec, recall=recall).plot()
plot display object visualization

Объединение объектов отображения в один график

Объекты отображения хранят вычисленные значения, которые передавались в качестве аргументов. Это позволяет легко объединять визуализации с помощью API matplotlib. В следующем примере мы размещаем отображения рядом друг с другом в строке.

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 8))

roc_display.plot(ax=ax1)
pr_display.plot(ax=ax2)
plt.show()
plot display object visualization
/home/circleci/project/sklearn/metrics/_plot/roc_curve.py:189: UserWarning:

No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.

Общее время выполнения скрипта: (0 минут 0,341 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_display_object_visualization.ipynb

Download Python source code: plot_display_object_visualization.py

Download zipped: plot_display_object_visualization.zip

Похожие примеры

Точность-полнота

ROC-кривая с использованием API визуализации

Многоклассовая ROC-кривая

Настройка порога принятия решения для обучения с учетом стоимости

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/auto_examples/miscellaneous/plot_display_object_visualization.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API