绘制交叉验证预测#

此示例演示如何将cross_val_predictPredictionErrorDisplay结合使用以可视化预测误差。

# 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个fold中的一个。现在我们可以使用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()
Plotting cross-validated predictions, Actual vs. Predicted values, Residuals vs. Predicted Values

重要的是要注意,在这个例子中,我们仅出于可视化目的使用了cross_val_predict

当不同的CV folds的大小和分布变化时,通过计算cross_val_predict返回的合并预测的单个性能指标来定量评估模型性能是有问题的。

建议使用以下方法计算每个fold的性能指标:cross_val_scorecross_validate

脚本总运行时间:(0分钟0.194秒)

相关示例

普通最小二乘法示例

普通最小二乘法示例

K 均值假设演示

K 均值假设演示

转换回归模型中的目标变量的影响

转换回归模型中的目标变量的影响

二分 K 均值与常规 K 均值性能比较

二分 K 均值与常规 K 均值性能比较

由Sphinx-Gallery生成的图库