调整估计器的超参数

Beginner

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

简介

超参数是估计器无法直接学习的参数。它们作为参数传递给估计器类的构造函数。调整估计器的超参数是构建有效机器学习模型的重要一步。这涉及找到能使模型性能最佳的超参数的最优组合。

Scikit-learn 提供了几种搜索最佳超参数的工具:GridSearchCVRandomizedSearchCV。在本实验中,我们将逐步介绍使用这些工具调整超参数的过程。

虚拟机使用提示

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

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

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

导入必要的库

首先,我们需要导入分析所需的必要库。我们将使用 sklearn.model_selection 来进行超参数调整。

import numpy as np
from sklearn.model_selection import GridSearchCV, RandomizedSearchCV

加载数据集

接下来,让我们加载要使用的数据集。在本练习中,我们可以使用任何我们选择的数据集。

from sklearn.datasets import load_iris

## 加载鸢尾花数据集
iris = load_iris()

## 将数据拆分为特征和目标
X = iris.data
y = iris.target

定义估计器和参数网格

现在我们需要定义想要调整的估计器以及要搜索的参数网格。参数网格指定了我们想要为每个超参数尝试的值。

from sklearn.svm import SVC

## 创建支持向量分类器的实例
svc = SVC()

## 定义参数网格
param_grid = {'C': [0.1, 1, 10, 100], 'gamma': [0.1, 0.01, 0.001], 'kernel': ['linear', 'rbf']}

使用交叉验证执行网格搜索

网格搜索会详尽地搜索指定参数网格中所有可能的超参数组合。它使用交叉验证来评估每个组合的性能。

## 创建 GridSearchCV 的实例
grid_search = GridSearchCV(svc, param_grid, cv=5)

## 拟合数据以执行网格搜索
grid_search.fit(X, y)

## 打印最佳超参数组合
print('最佳超参数:', grid_search.best_params_)

使用交叉验证执行随机搜索

随机搜索会从参数网格中随机抽取一个子集,并使用交叉验证来评估每个组合的性能。当参数空间很大且进行详尽搜索不可行时,它很有用。

## 创建 RandomizedSearchCV 的实例
random_search = RandomizedSearchCV(svc, param_grid, cv=5, n_iter=10, random_state=0)

## 拟合数据以执行随机搜索
random_search.fit(X, y)

## 打印最佳超参数组合
print('最佳超参数:', random_search.best_params_)

总结

在本实验中,我们学习了如何使用GridSearchCVRandomizedSearchCV来调整估计器的超参数。我们定义了估计器和参数网格,然后分别执行了网格搜索和随机搜索,以找到超参数的最佳组合。超参数调整是构建机器学习模型以提高其性能的重要一步。