调整估计器的超参数

Machine LearningMachine LearningBeginner
立即练习

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

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

简介

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

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

虚拟机使用提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-71123{{"调整估计器的超参数"}} sklearn/model_selection -.-> lab-71123{{"调整估计器的超参数"}} sklearn/datasets -.-> lab-71123{{"调整估计器的超参数"}} ml/sklearn -.-> lab-71123{{"调整估计器的超参数"}} end

导入必要的库

首先,我们需要导入分析所需的必要库。我们将使用 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来调整估计器的超参数。我们定义了估计器和参数网格,然后分别执行了网格搜索和随机搜索,以找到超参数的最佳组合。超参数调整是构建机器学习模型以提高其性能的重要一步。