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

Machine LearningMachine LearningBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

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

虚拟机使用提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49230{{"普通最小二乘法与岭回归的方差"}} end

导入库

在这一步中,我们将导入必要的 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)和岭回归之间的差异。我们了解了这两种线性回归方法如何处理数据中的噪声,以及它们在预测方面的不同之处。我们还对分析结果进行了可视化。