探索 Scikit-Learn 的随机梯度下降分类器

Beginner

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

简介

在本实验中,我们将探索随机梯度下降(SGD),这是一种强大的优化算法,常用于机器学习中解决大规模和稀疏问题。我们将学习如何使用 scikit-learn 库中的 SGDClassifier 和 SGDRegressor 类来训练线性分类器和回归器。

虚拟机使用提示

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

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

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

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 92%。获得了学习者 86% 的好评率。

导入必要的库

首先,我们需要导入必要的库。我们将使用 scikit-learn 库进行机器学习和数据预处理。

import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import SGDClassifier, SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, mean_squared_error

加载并预处理数据

接下来,我们将加载鸢尾花数据集,并使用 StandardScaler 对特征进行缩放来预处理数据。

## 加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target

## 缩放特征
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

## 将数据拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

使用随机梯度下降(SGD)训练分类器

现在我们将使用 SGDClassifier 类训练一个分类器。我们将使用对数损失(log_loss)损失函数和 L2 正则化。

## 使用随机梯度下降训练分类器
clf = SGDClassifier(loss="log_loss", penalty="l2", max_iter=100, random_state=42)
clf.fit(X_train, y_train)

## 在测试集上进行预测
y_pred = clf.predict(X_test)

## 评估分类器的准确率
accuracy = accuracy_score(y_test, y_pred)

## 打印准确率
print("分类器准确率:", accuracy)

使用随机梯度下降(SGD)训练回归器

接下来,我们将使用 SGDRegressor 类训练一个回归器。我们将使用平方误差(squared_error)损失函数和 L2 正则化。

## 使用随机梯度下降训练回归器
reg = SGDRegressor(loss="squared_error", penalty="l2", max_iter=100, random_state=42)
reg.fit(X_train, y_train)

## 在测试集上进行预测
y_pred = reg.predict(X_test)

## 评估回归器的均方误差
mse = mean_squared_error(y_test, y_pred)

## 打印均方误差
print("回归器均方误差:", mse)

总结

在本实验中,我们学习了如何使用随机梯度下降(SGD),通过 scikit-learn 库来训练线性分类器和回归器。我们在鸢尾花数据集上训练了一个分类器并评估其准确率,还训练了一个回归器并评估其均方误差。随机梯度下降是一种强大的优化算法,能够高效地处理大规模和稀疏的机器学习问题。