Примечание
Перейти в конец, чтобы скачать полный код примера или запустить этот пример в браузере с помощью 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()

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

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