简介
超参数是估计器无法直接学习的参数。它们作为参数传递给估计器类的构造函数。调整估计器的超参数是构建有效机器学习模型的重要一步。这涉及找到能使模型性能最佳的超参数的最优组合。
Scikit-learn 提供了几种搜索最佳超参数的工具:GridSearchCV 和 RandomizedSearchCV。在本实验中,我们将逐步介绍使用这些工具调整超参数的过程。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 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_)
总结
在本实验中,我们学习了如何使用GridSearchCV和RandomizedSearchCV来调整估计器的超参数。我们定义了估计器和参数网格,然后分别执行了网格搜索和随机搜索,以找到超参数的最佳组合。超参数调整是构建机器学习模型以提高其性能的重要一步。