python 超参数 自动搜索模块GridSearchCV(收藏)

1. 引言

当我们跑机器学习程序时,尤其是调节网络参数时,通常待调节的参数有很多,参数之间的组合更是繁复。依照注意力>时间>金钱的原则,人力手动调节注意力成本太高,非常不值得。For循环或类似于for循环的方法受限于太过分明的层次,不够简洁与灵活,注意力成本高,易出错。本文介绍sklearn模块的GridSearchCV模块,能够在指定的范围内自动搜索具有不同超参数的不同模型组合,有效解放注意力。

2. GridSearchCV模块简介

这个模块是sklearn模块的子模块,导入方法非常简单

from sklearn.model_selection import GridSearchCV
函数原型:
class sklearn.model_selection.GridSearchCV(estimator, param_grid, scoring=None, fit_params=None, n_jobs=1, iid=True, refit=True, cv=None, verbose=0, pre_dispatch=‘2*n_jobs‘, error_score=‘raise‘, return_train_score=True)

其中cv可以是整数或者交叉验证生成器或一个可迭代器,cv参数对应的4种输入列举如下:
  1. None:默认参数,函数会使用默认的3折交叉验证
  2. 整数k:k折交叉验证。对于分类任务,使用StratifiedKFold(类别平衡,每类的训练集占比一样多,具体可以查看官方文档)。对于其他任务,使用KFold
  3. 交叉验证生成器:得自己写生成器
  4. 可以生成训练集与测试集的迭代器

3. 分析结果自动保存

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。 CSV文件有个突出的优点,可以用excel等软件打开,比起记事本和matlab、python等编程语言界面,便于查看、制作报告、后期整理等。 GridSearchCV模块中,不同超参数的组合方式及其计算结果以字典的形式保存在 clf.cv_results_中,python的pandas模块提供了高效整理数据的方法,只需要3行代码即可解决问题。 GridSearchCV模块中,不同超参数的组合方式及其计算结果以字典的形式保存在 clf.cv_results_中,python的pandas模块提供了高效整理数据的方法,只需要3行代码即可解决问题。
cv_result = pd.DataFrame.from_dict(clf.cv_results_) 
with open(‘cv_result.csv‘,‘w‘) as f:   
	cv_result.to_csv(f)

4. 完整例程

代码清晰易懂,无须解释。https://github.com/JiJingYu/tensorflow-exercise/tree/master/svm_grid_search
import pandas as pd
from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report 
iris = datasets.load_iris()
parameters = {‘kernel‘:(‘linear‘, ‘rbf‘), ‘C‘:[1, 2, 4], ‘gamma‘:[0.125, 0.25, 0.5 ,1, 2, 4]}
svr = svm.SVC()
clf = GridSearchCV(svr, parameters, n_jobs=-1)
clf.fit(iris.data, iris.target)
cv_result = pd.DataFrame.from_dict(clf.cv_results_)
with open(‘cv_result.csv‘,‘w‘) as f:
     cv_result.to_csv(f)

print(‘The parameters of the best model are: ‘)
print(clf.best_params_)
y_pred = clf.predict(iris.data)
print(classification_report(y_true=iris.target, y_pred=y_pred))

原文地址:https://www.cnblogs.com/nxf-rabbit75/p/9353061.html

时间: 2024-08-30 00:51:17

python 超参数 自动搜索模块GridSearchCV(收藏)的相关文章

机器学习 —— 用于超参数随机化搜索的几个分布

机器学习中超参数搜索的常用方法为 Grid Search,然而如果参数一多则容易碰到维数诅咒的问题,即参数之间的组合呈指数增长.如果有 \(m\) 个参数,每个有 \(n\) 个取值,则时间复杂度为 \(\Theta(n^m)\). Bengio 等人在 <Random Search for Hyper-Parameter Optimization> 中提出了随机化搜索的方法.他们指出大部分参数空间存在 "低有效维度 (low effective dimensionality)&qu

grid search 超参数寻优

http://scikit-learn.org/stable/modules/grid_search.html 1. 超参数寻优方法 gridsearchCV 和  RandomizedSearchCV 2. 参数寻优的技巧进阶 2.1. Specifying an objective metric By default, parameter search uses the score function of the estimator to evaluate a parameter setti

如何使用python来模拟鼠标点击(将通过实例自动化模拟在360浏览器中自动搜索&quot;python&quot;)

一.准备工作: 安装pywin32,后面开发需要pywin32的支持,否则无法完成与windows层面相关的操作. pywin32的具体安装及注意事项: 1.整体开发环境: 基于windows7操作系统; 提前安装python(因为篇幅问题,在此不详细讲解python环境的安装,大家可以自备楼梯): 大家可以在cmd中测试下python环境是否安装好: 大家可以看到我电脑上已经安装好了Python,并显示版本与是V 3.6.2. 注:自己电脑上的Python版本号一定要知道,后面安装pywin3

深度学习模型超参数搜索实用指南

要知道,与机器学习模型不同,深度学习模型里面充满了各种超参数.而且,并非所有参数变量都能对模型的学习过程产生同样的贡献. 考虑到这种额外的复杂性,在一个多维空间中找到这些参数变量的最佳配置并不是件容易的事情. 每一位科学家和研究人员,都希望在现有的资源条件下(计算.金钱和时间),找到最佳的模型. 通常情况下,研究人员和业余爱好者会在开发的最后阶段尝试一种搜索策略.这可能会有助改进他们辛辛苦训练出来的模型. 此外,在半自动/全自动深度学习过程中,超参数搜索也是的一个非常重要的阶段. 超参数到底是什

python 输入参数解包,模块导入,接收IO输入参数

#coding=utf-8 from sys import argv script,first,second,third = argv print "the script is=",script print "the first is=",first print "the second is=",second print "the third is=",third """ 执行方法 D:\>

机器学习 | 特征工程- 超参数调优方法整理

特征工程是机器学习当中很重要的部分,可以帮助我们设计.创建新特征,以便模型从中提取重要相关性.本文将记录并持续更新相关特征工程的工具包介绍,包括自动模型选择和超参数调优等各方面. · Featuretools Featuretools 是一个开源的Python 库,用于自动化特征工程.自动特征工程能够缩减时间成本,构建更优秀的预测模型,生成更有意义的特征,还能防止数据泄漏(data leakage). 目标任务:从数据表格集中获取所有的数据信息并整合到一张表中,再创建特征. 解决方案:采用深度特

Python自动化运维之模块与包的使用

一.模块1.什么是模块?一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀.2.为何要使用模块?如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script. 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理.这时我们不仅仅可以把这些文件当做脚本

Python学习之路12?模块与包

一 模块 1.1 什么是模块? 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 1.2 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script. 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理.这时我们不仅仅可以把

python之路-16-常用模块学习

16.1模块定义 定义:用一砣代码实现了某个功能的代码集合(n个 .py 文件组成的代码集合就称为模块) 模块分为三种: 自定义模块 内置标准模块(又称标准库) 开源模块 16.2导入方法 单个模块导入:import module_name 一个模块多个函数:from module_lanhan import * 别名导入:from module_lanhan import def_name as module_lanhan_def_name 多模块一起导入需要用逗号(,)隔开 Import m