[Python] 什么是网格搜索以及scikit-learn中GridSearch类的介绍和使用案例?

什么是网格搜索?

网格搜索是一种参数调优的方法,它可以帮助找到最佳的模型参数。在网格搜索中,我们先指定参数的候选值范围,然后枚举所有可能的参数组合,计算每个模型的性能指标(比如准确率、精确率等)。最后,选择性能指标最优的那个参数组合作为最终的模型参数。网格搜索的名称来源于我们将参数的候选值范围表示为一个二维的参数网格。

scikit-learn GridSearchCV类介绍

API Reference — scikit-learn 1.4.0 documentation

sklearn.model_selection.GridSearchCV — scikit-learn 1.4.0 documentation 

 

重要参数说明:

  • estimator:要优化的模型对象。
  • param_grid:指定参数的候选值范围,可以是一个字典或列表。
  • scoring:性能评估方法。
  • n_jobs:并行运行的作业数。
  • refit:是否在找到最佳参数后在整个数据集上重新拟合估计器。
  • cv:交叉验证生成器或可迭代的产生训练/验证集的拆分器。
  • verbose:详细程度。
  • pre_dispatch:控制在并行执行期间调度的作业数。当调度的作业比CPU处理的作业多时,减少这个数字有助于避免内存消耗的爆炸式增长。
  • error_score:如果估算器拟合中出现错误,则分配给分数的值。。
  • return_train_score:是否返回训练评分。

重要属性说明:

  • best_estimator_:返回在交叉验证中选择的最佳估计器。
  • best_params_:返回在交叉验证中选择的最佳参数组合。
  • best_score_:返回在交叉验证中选择的最佳评分。
  • cv_results_:返回一个字典,其中包含网格搜索期间计算出的所有性能指标和参数设置的详细信息。
  • scorer_:返回用于评分的评估器。
  • n_splits_:返回交叉验证折叠数。

这些属性可以提供有关在网格搜索期间发生的事件和结果的详细信息,包括最佳模型、最佳参数和最佳评分等。您可以根据需要使用这些属性来进一步分析优化的结果。

scikit-learn GridSearchCV类使用案例

# 导入依赖包
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
# 导入乳腺癌数据集,探索数据
data = load_breast_cancer()
print(data.data.shape) # 可以看到,乳腺癌数据集有569条记录,30个特征,单看维度虽然不算太高,但是样本量非常少。过拟合的情况可能存在。
print(data.data[0:5])
print(data.target.shape)
print(data.target[0:5])
print(data.feature_names)
print(data.target_names)

# 进行一次简单的建模,看看模型本身在数据集上的效果
rfc = RandomForestClassifier(n_estimators=10, random_state=90)
score_pre = cross_val_score(rfc, data.data, data.target,cv=10).mean()
score_pre
# 这里可以看到,随机森林在乳腺癌数据上的表现本就还不错,在现实数据集上,基本上不可能什么都不调就看到95%以上的准确率

# 开始按照参数对模型整体准确率的影响程度进行调参,首先调整max_depth
#调整max_depth
param_grid = {'max_depth':np.arange(1, 20, 1)}
# 一般根据数据的大小来进行一个试探,乳腺癌数据很小,所以可以采用1~10,或者1~20这样的试探
# 但对于像digit recognition那样的大型数据来说,我们应该尝试30~50层深度(或许还不足够
#   更应该画出学习曲线,来观察深度对模型的影响
rfc = RandomForestClassifier(n_estimators=73,random_state=90)
GS = GridSearchCV(rfc, param_grid, cv=10)
GS.fit(data.data,data.target)
print(GS.best_params_)
print(GS.best_score_)
plt.figure(figsize=[20,5])
plt.plot(range(1,20), GS.cv_results_['mean_test_score'])
plt.ylabel('score')
plt.xlabel('max_depth')
plt.xticks(range(1,21))
plt.show()

更多详细信息,可以阅读:[Python] 什么是集成算法,什么是随机森林?随机森林分类器(RandomForestClassifier)及其使用案例-CSDN博客

的“案例二:乳腺癌数据集进行随机森林调参”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/450617.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Compose | UI组件(十二) | Lazy Layout - 列表

文章目录 前言LazyListScope作用域 用来干什么?LazyColumn组件含义?LazyColumn的基本使用LazyColumn Padding设置边距LazyColumn 设置边距 (contentPadding)LazyColumn 为每个子项设置边距 (Arrangement.spacedBy())LazyColumn 根据 rememberLazyListSta…

如何在centos云服务器上持续运行

一、直接上命令 cd到jar包所在目录 输入命令运行 nohup java -jar xxx.jar & 退出当前命令 二、云服务器上安装宝塔管理面板 直接用宝塔的进程守护,设置好当前进程输入参数保存就ok

大规模机器学习简介

1. 非线性回归问题 1.1 问题描述 我们有一组实验数据,每个实验都给出了输入和输出对 (Xn, Yn)。每个输入 是空间中的一个点,每个输出 是 空间中的一个点。这些数据点被假设为独立同分布(i.i.d)。 我们的目标是找到一个函数 fw&…

智慧商城(continue)

文章目录 1.静态页面结构准备和动态渲染2.搜索 - 历史记录管理1. 写好基础静态页面,可以先往里面加一点假数据2. 上面基本的渲染直接利用history渲染就可以了3. 搜索历史基本渲染结束了,开始点击搜索添加历史4. vant内用v-model" ",可以快速拿到搜索框的值5. 往历史记…

2024年美国大学生数学建模比赛MCM问题B:搜索潜水器-思路解析与代码解答

2024 MCM Problem B Searching for Submersibles 一、题目翻译 背景: 总部位于希腊的小型海上巡航潜艇(MCMS)公司,制造能够将人类运送到海洋最深处的潜水器。潜水器被移动到该位置,并不受主船的束缚。MCMS现在希望用…

IP地址查询网络威胁:解析威胁、防范攻击

随着互联网的不断普及和发展,网络威胁也愈发严峻。对IP地址进行查询以解析网络威胁,成为网络安全领域一项重要的工作。本文将深入探讨IP地址查询网络威胁的原理、应用场景、防范策略以及未来的发展方向。 IP地址查询网络威胁原理 IP地址查询IP数据云 -…

【Java程序设计】【C00243】基于Springboot的社区医院管理系统(有论文)

基于Springboot的社区医院管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的社区医院管理服务系统 本系统分为系统功能模块、管理员功能模块、用户功能模块以及医生功能模块。 系统功能模块:社…

泰克示波器(TBS2000系列)触发功能使用讲解——边沿触发

# Trigger区域 触发区域用于对触发功能进行配置。示波器的触发功能用于采集(Acquire)那些在瞬间出现的信号,便于我们分析观察,此时可以当做逻辑分析仪使用。触发区域按钮包括:menu、Level\Force Trig三个。 目录 1.1 …

java设计模式:策略模式

在平常的开发工作中,经常会用到不同的设计模式,合理的使用设计模式,可以提高开发效率,提高代码质量,提高代码的可拓展性和维护性。今天来聊聊策略模式。 策略模式是一种行为型设计模式,运行时可以根据需求动…

STM32 UART/USART与RTOS的多任务通信和同步机制设计

在STM32微控制器中,UART/USART与RTOS的多任务通信和同步机制设计可以通过操作系统提供的任务调度机制和各种同步原语(例如信号量、邮箱、消息队列等)来实现。在下面的解释中,我将介绍如何设计基于FreeRTOS的STM32多任务通信和同步…

ZigBee学习——在官方例程基础实现点灯

IAR版本 :10.10.1 Z-stack版本 :3.0.2 文章目录 一、买的板子原理图二、实现过程2.1 重定义LED的物理映射(HAL层)2.2 创建LED事件(应用层)2.2.1 定义用户事件2.2.2 修改zclGenericApp_event_loop() 2.3 触发事件 一、买的板子原理图 二、实现过程 2.1 重定义LED的物理映射(HAL…

分库分表 21 条法则,hold 住!

大家好~今天给大家分享分库分表的 21 条法则 我们结合具体业务场景,以t_order表为例进行架构优化。由于数据量已经达到亿级别,查询性能严重下降,因此我们采用了分库分表技术来处理这个问题。具体而言,我们将原本的单库…