6. Визуализации#

Scikit-learn определяет простой API для создания визуализаций в машинном обучении. Ключевая особенность этого API — возможность быстрого построения графиков и визуальной настройки без пересчёта. Мы предоставляем Display классов, которые предоставляют два метода для создания графиков: from_estimator и from_predictions.

The from_estimator метод генерирует Display объект из обученного оценщика, входные данные (X, y), и график. from_predictions метод создает Display объект из истинных и предсказанных значений (y_test, y_pred), и график.

Используя from_predictions Если передается массивоподобный объект осей, частная зависимость pos_label. Для predict_proba, выберите столбец, соответствующий pos_label класс, в то время как для decision_function, инвертировать оценку (т.е. умножить на -1), если pos_label не является последним классом в classes_ атрибут вашего оценщика.

The Display объект хранит вычисленные значения (например, значения метрик или важность признаков), необходимые для построения графиков с помощью Matplotlib. Эти значения являются результатами, полученными из исходных предсказаний, переданных в from_predictions, или оценщик и X передано в from_estimator.

Объекты отображения имеют метод plot, который создает график matplotlib после инициализации объекта отображения (обратите внимание, что мы рекомендуем создавать объекты отображения через from_estimator или from_predictions вместо прямой инициализации). Метод plot позволяет добавлять к существующему графику, передавая существующие графики matplotlib.axes.Axes в ax параметр.

В следующем примере мы строим ROC-кривую для обученной модели логистической регрессии from_estimator:

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import RocCurveDisplay
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
y = y == 2  # make binary
X_train, X_test, y_train, y_test = train_test_split(
   X, y, test_size=.8, random_state=42
)
clf = LogisticRegression(random_state=42, C=.01)
clf.fit(X_train, y_train)

clf_disp = RocCurveDisplay.from_estimator(clf, X_test, y_test)
_images/visualizations-1.png

Если у вас уже есть значения предсказаний, вы можете вместо этого использовать from_predictions чтобы сделать то же самое (и сэкономить на вычислениях):

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import RocCurveDisplay
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
y = y == 2  # make binary
X_train, X_test, y_train, y_test = train_test_split(
   X, y, test_size=.8, random_state=42
)
clf = LogisticRegression(random_state=42, C=.01)
clf.fit(X_train, y_train)

# select the probability of the class that we considered to be the positive label
y_pred = clf.predict_proba(X_test)[:, 1]

clf_disp = RocCurveDisplay.from_predictions(y_test, y_pred)
_images/visualizations-2.png

Возвращаемый clf_disp объект позволяет добавить еще одну кривую к уже вычисленной ROC-кривой. В этом случае clf_disp является RocCurveDisplay которая хранит вычисленные значения как атрибуты с названиями roc_auc, fpr, и tpr.

Далее мы обучаем классификатор случайного леса и снова строим ранее вычисленную ROC-кривую, используя plot метод Display объект.

import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestClassifier

rfc = RandomForestClassifier(n_estimators=10, random_state=42)
rfc.fit(X_train, y_train)

ax = plt.gca()
rfc_disp = RocCurveDisplay.from_estimator(
  rfc, X_test, y_test, ax=ax, curve_kwargs={"alpha": 0.8}
)
clf_disp.plot(ax=ax, curve_kwargs={"alpha": 0.8})
_images/visualizations-3.png

Обратите внимание, что мы передаем alpha=0.8 в функции построения графиков для настройки значений alpha кривых.

Примеры

6.1. Доступные утилиты построения графиков#

6.1.1. Объекты отображения#

calibration.CalibrationDisplay(prob_true, ...)

Визуализация калибровочной кривой (также известной как диаграмма надежности).

inspection.PartialDependenceDisplay(...[, ...])

График частичной зависимости (PDP) и индивидуальное условное ожидание (ICE).

inspection.DecisionBoundaryDisplay(*, xx0, ...)

Визуализация границ решений.

metrics.ConfusionMatrixDisplay(...[, ...])

Визуализация матрицы ошибок.

metrics.DetCurveDisplay(*, fpr, fnr[, ...])

Визуализация кривой компромисса ошибок обнаружения (DET).

metrics.PrecisionRecallDisplay(точность, ...)

Визуализация Precision Recall.

metrics.PredictionErrorDisplay(*, y_true, y_pred)

Визуализация ошибки предсказания регрессионной модели.

metrics.RocCurveDisplay(*, fpr, tpr[, ...])

Визуализация ROC-кривой.

model_selection.LearningCurveDisplay(*, ...)

Визуализация кривой обучения.

model_selection.ValidationCurveDisplay(*, ...)

Визуализация кривой валидации.