普通最小二乘法与岭回归的方差

Beginner

This tutorial is from open-source community. Access the source code

简介

在本实验中,我们将使用 Python 的 scikit-learn 库来探究普通最小二乘法(OLS)和岭回归之间的差异。我们将研究这两种线性回归方法如何处理数据中的噪声,以及它们在预测方面有何不同。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到 笔记本 标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

导入库

在这一步中,我们将导入必要的 Python 库。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

创建数据

在这一步中,我们将创建用于分析的数据。

X_train = np.c_[0.5, 1].T
y_train = [0.5, 1]
X_test = np.c_[0, 2].T

定义分类器

在这一步中,我们将定义普通最小二乘法(OLS)和岭回归分类器。

classifiers = dict(
    ols=linear_model.LinearRegression(), ridge=linear_model.Ridge(alpha=0.1)
)

可视化结果

在这一步中,我们将可视化分析结果。

for name, clf in classifiers.items():
    fig, ax = plt.subplots(figsize=(4, 3))

    for _ in range(6):
        this_X = 0.1 * np.random.normal(size=(2, 1)) + X_train
        clf.fit(this_X, y_train)

        ax.plot(X_test, clf.predict(X_test), color="gray")
        ax.scatter(this_X, y_train, s=3, c="gray", marker="o", zorder=10)

    clf.fit(X_train, y_train)
    ax.plot(X_test, clf.predict(X_test), linewidth=2, color="blue")
    ax.scatter(X_train, y_train, s=30, c="red", marker="+", zorder=10)

    ax.set_title(name)
    ax.set_xlim(0, 2)
    ax.set_ylim((0, 1.6))
    ax.set_xlabel("X")
    ax.set_ylabel("y")

    fig.tight_layout()

plt.show()

总结

在本次实验中,我们学习了如何使用 Python 的 scikit-learn 库来探究普通最小二乘法(OLS)和岭回归之间的差异。我们了解了这两种线性回归方法如何处理数据中的噪声,以及它们在预测方面的不同之处。我们还对分析结果进行了可视化。