Визуализации с объектами 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)
Pipeline(steps=[('standardscaler', StandardScaler()),
                ('logisticregression', LogisticRegression(random_state=0))])
В среде Jupyter, пожалуйста, перезапустите эту ячейку, чтобы показать HTML-представление, или доверьтесь блокноту.
На GitHub HTML-представление не может отображаться, попробуйте загрузить эту страницу с помощью nbviewer.org.


Создать 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

Создать 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

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

Связанные примеры

Precision-Recall

Precision-Recall

Кривая ROC с API визуализации

Кривая ROC с API визуализации

Многоклассовая рабочая характеристика приемника (ROC)

Многоклассовая рабочая характеристика приемника (ROC)

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

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

Галерея, созданная Sphinx-Gallery