Примечание
Перейти в конец для скачивания полного кода примера или для запуска этого примера в вашем браузере через 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)
Создание 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()

Создание 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()

/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()

Объединение объектов отображения в один график
Объекты отображения хранят вычисленные значения, которые передавались в качестве аргументов. Это позволяет легко объединять визуализации с помощью 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()

/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 секунды)
Похожие примеры
© 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