Scikit-learn 中的线性模型

Machine LearningMachine LearningBeginner
立即练习

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

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

简介

在本实验中,我们将探索 scikit-learn 中的线性模型。线性模型是用于回归和分类任务的一组方法。它们假设目标变量是特征的线性组合。由于其简单性和可解释性,这些模型在机器学习中被广泛使用。

我们将涵盖以下主题:

  • 普通最小二乘法
  • 岭回归
  • Lasso
  • 逻辑回归
  • 随机梯度下降
  • 感知机

如果你没有机器学习的任何先验经验,请从 监督学习:回归 开始。

虚拟机提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/linear_model("Linear Models") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/linear_model -.-> lab-71093{{"Scikit-learn 中的线性模型"}} ml/sklearn -.-> lab-71093{{"Scikit-learn 中的线性模型"}} end

普通最小二乘法

如果你没有机器学习的任何先验经验,请从 监督学习:回归 开始。

普通最小二乘法(OLS)是一种线性回归方法,它使观测目标与预测目标之间的平方差之和最小化。在数学上,它解决的是如下形式的问题:

\min_{w} || X w - y||_2^2

让我们开始使用 OLS 拟合一个线性回归模型。

from sklearn import linear_model

reg = linear_model.LinearRegression()
X = [[0, 0], [1, 1], [2, 2]]
y = [0, 1, 2]
reg.fit(X, y)

print(reg.coef_)
  • 我们从 scikit-learn 中导入 linear_model 模块。
  • 我们创建一个 LinearRegression 的实例。
  • 我们使用 fit 方法将模型拟合到训练数据上。
  • 我们打印线性模型的系数。

岭回归

岭回归是一种线性回归方法,它在普通最小二乘目标函数中添加了一个惩罚项。这个惩罚项通过将系数向零收缩来帮助减少过拟合。模型的复杂度可以通过正则化参数来控制。

让我们拟合一个岭回归模型。

reg = linear_model.Ridge(alpha=0.5)
reg.fit([[0, 0], [0, 0], [1, 1]], [0, 0.1, 1])

print(reg.coef_)
  • 我们创建一个 Ridge 实例,将正则化参数 alpha 设置为 0.5。
  • 我们使用 fit 方法将模型拟合到训练数据上。
  • 我们打印岭回归模型的系数。

Lasso

Lasso 是一种线性回归方法,它在普通最小二乘目标函数中添加了一个惩罚项。该惩罚项具有将某些系数精确设置为零的效果,从而实现特征选择。Lasso 可用于稀疏模型估计。

让我们拟合一个 Lasso 模型。

reg = linear_model.Lasso(alpha=0.1)
reg.fit([[0, 0], [1, 1]], [0, 1])

print(reg.coef_)
  • 我们创建一个 Lasso 实例,将正则化参数 alpha 设置为 0.1。
  • 我们使用 fit 方法将模型拟合到训练数据上。
  • 我们打印 Lasso 模型的系数。

逻辑回归

逻辑回归是一种分类方法,它使用逻辑函数来估计可能结果的概率。它通常用于二元分类任务。逻辑回归也可以扩展以处理多类分类问题。

让我们拟合一个逻辑回归模型。

clf = linear_model.LogisticRegression(random_state=0).fit(X, y)
print(clf.coef_)
  • 我们创建一个 LogisticRegression 实例,将 random_state 参数设置为 0。
  • 我们使用 fit 方法将模型拟合到训练数据上。
  • 我们打印逻辑回归模型的系数。

随机梯度下降(SGD)

随机梯度下降(SGD)是一种用于训练线性模型的简单而高效的方法。当样本数量和特征数量非常大时,它特别有用。SGD 在每次迭代时使用一小部分训练数据来更新模型参数,这使得它适用于在线学习和核外学习。

让我们使用 SGD 拟合一个逻辑回归模型。

clf = linear_model.SGDClassifier(loss="log_loss", max_iter=1000)
clf.fit(X, y)

print(clf.coef_)
  • 我们创建一个 SGDClassifier 实例,将 loss 参数设置为 "log_loss" 以执行逻辑回归。
  • 我们使用 fit 方法将模型拟合到训练数据上。
  • 我们打印使用 SGD 获得的逻辑回归模型的系数。

感知机

感知机是一种简单的线性分类算法,适用于大规模学习。它仅在出现错误时更新其模型,这使得它比使用铰链损失的随机梯度下降(SGD)训练速度更快。得到的模型也更稀疏。

让我们拟合一个感知机模型。

clf = linear_model.Perceptron(alpha=0.1)
clf.fit(X, y)

print(clf.coef_)
  • 我们创建一个 Perceptron 实例,将正则化参数 alpha 设置为 0.1。
  • 我们使用 fit 方法将模型拟合到训练数据上。
  • 我们打印感知机模型的系数。

总结

在本实验中,我们探索了 scikit-learn 中的线性模型。我们了解了普通最小二乘法、岭回归、套索回归、逻辑回归、随机梯度下降和感知机。这些模型可用于回归和分类任务。我们还看到了如何使用各种算法和技术(如在线学习和特征选择)来拟合这些模型。