Примечание
Перейти к концу для загрузки полного примера кода. или для запуска этого примера в вашем браузере через JupyterLite или Binder
Визуализация прогнозов с перекрестной проверкой
В этом примере показано, как использовать cross_val_predict совместно с PredictionErrorDisplay для визуализации ошибок прогнозирования.
# Authors: The scikit-learn developers # SPDX-License-Identifier: BSD-3-Clause
Загрузим набор данных о диабете и создадим экземпляр линейной регрессионной модели.
from sklearn.datasets import load_diabetes from sklearn.linear_model import LinearRegression X, y = load_diabetes(return_X_y=True) lr = LinearRegression()
cross_val_predict возвращает массив того же размера, что и y, где каждый элемент представляет собой прогноз, полученный с помощью перекрестной проверки.
from sklearn.model_selection import cross_val_predict y_pred = cross_val_predict(lr, X, y, cv=10)
Поскольку cv=10, это означает, что мы обучили 10 моделей, и каждая модель использовалась для прогнозирования на одном из 10 слоёв. Теперь мы можем использовать PredictionErrorDisplay для визуализации ошибок прогнозирования.
На левой оси мы отображаем наблюдаемые значения \(y\) по отношению к прогнозируемым значениям \(\hat{y}\), полученным от моделей. На правой оси мы отображаем остатки (т. е. разницу между наблюдаемыми и прогнозируемыми значениями) по отношению к прогнозируемым значениям.
import matplotlib.pyplot as plt
from sklearn.metrics import PredictionErrorDisplay
fig, axs = plt.subplots(ncols=2, figsize=(8, 4))
PredictionErrorDisplay.from_predictions(
y,
y_pred=y_pred,
kind="actual_vs_predicted",
subsample=100,
ax=axs[0],
random_state=0,
)
axs[0].set_title("Actual vs. Predicted values")
PredictionErrorDisplay.from_predictions(
y,
y_pred=y_pred,
kind="residual_vs_predicted",
subsample=100,
ax=axs[1],
random_state=0,
)
axs[1].set_title("Residuals vs. Predicted Values")
fig.suptitle("Plotting cross-validated predictions")
plt.tight_layout()
plt.show()

Важно отметить, что мы использовали cross_val_predict только для целей визуализации в этом примере.
Было бы проблематично количественно оценить производительность модели, вычислив один метрический показатель производительности из конкатенированных прогнозов, возвращаемых cross_val_predict, когда различные слои перекрестной проверки отличаются по размеру и распределению.
Рекомендуется вычислять метрики производительности по слоям с помощью: cross_val_score или cross_validate вместо этого.
Общее время выполнения скрипта: (0 минут 0,202 секунды)
Связанные примеры
© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/auto_examples/model_selection/plot_cv_predict.html