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