独家 | 简单三步实现Python脚本超参数调优(附代码)

2024-04-13 22:32

本文主要是介绍独家 | 简单三步实现Python脚本超参数调优(附代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


作者:Jakub Czakon, Neptune.ai

翻译:陈之炎

校对:和中华

本文约1500字,建议阅读5分钟。

Python机器学习模型建立起来之后,如何对它的性能进行优化?按照本指南中的三个步骤可以对任意优化库设置自动调优。

在编写完成一个Python脚本之后,便可以用它训练和评估机器学习模型了,现在,问题来了,是否能对它自动调整超参数以提高其性能呢?

自有办法!

在本文中,将展示如何将脚本转换为可以用任何超参数优化库优化的目标函数。

只需要三个步骤,便可实现模型的参数调整。

准备好了?

那就开始吧!

假设main.py 脚本如下所示:

第1步:从代码中解耦出搜索参数

提取想要调整的参数,将它们放在脚本顶部的字典中,这样做之后,便可以有效地将搜索参数与代码的其余部分解耦。


第2步:将训练和评估打包为一个函数

现在,可以将整个训练和评估逻辑放在 train_evaluate函数的内部。此函数以参数为输入,输出验证分数。


第3步:运行超参数调整脚本

快要实现了。

现在,利用train_evaluate函数作为选定的黑盒优化库的目标。

本例采用Scikit Optimize实现优化,我在另一篇文章中,对此作了详细描述,同时,你也可以使用其它超参数优化库。

Scikit Optimize

https://neptune.ai/blog/scikit-optimize

总之:

  • 定义搜索空间,

  • 创建目标函数以对它最小化,

  • 通过forest_minimize函数运行优化。

 

在这个例子中,我随机选定了10个参数集,尝试了100种不同的配置下的调优。

这就是全部过程。

result对象包含有关最佳分数和对应参数的信息。

注:如果想在训练结束后进行可视化,并保存诊断图表,那么可以向Neptune中添加一个回调函数和一个记录每次超参数搜索的函数。只需调用库中 helper function from neptune-contrib。

helper function from neptune-contrib

https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit_v2&action=edit&isNew=1&type=10&token=832229466&lang=zh_CN#NeptuneMonitor

现在,运行参数扫描时,可以看到以下内容:

查看代码、图表和结果中的skopt hyperparameter sweep experiment。

skopt hyperparameter sweep experiment

https://ui.neptune.ai/jakub-czakon/blog-hpo/e/BLOG-369/charts

结语

 

在本文中,我们学习了如何通过3个步骤对 Python脚本的超参数进行优化。

希望有了这些知识,你能更便捷地建立更优的机器学习模型。

 

相关文献:

超参数优化实战

如何自动实现超参数优化

用Google Colab的Hyperas实现 Keras超参数调优

原文标题:

How to Do Hyperparameter Tuning on Any Python Script in 3 Easy Steps

原文链接:

https://www.kdnuggets.com/2020/04/hyperparameter-tuning-python.html


如您想与我们保持交流探讨、持续获得数据科学领域相关动态,包括大数据技术类、行业前沿应用、讲座论坛活动信息、各种活动福利等内容,敬请扫码加入数据派THU粉丝交流群,红数点恭候各位。

编辑:王菁

校对:林亦霖

译者简介

陈之炎,北京交通大学通信与控制工程专业毕业,获得工学硕士学位,历任长城计算机软件与系统公司工程师,大唐微电子公司工程师,现任北京吾译超群科技有限公司技术支持。目前从事智能化翻译教学系统的运营和维护,在人工智能深度学习和自然语言处理(NLP)方面积累有一定的经验。业余时间喜爱翻译创作,翻译作品主要有:IEC-ISO 7816、伊拉克石油工程项目、新财税主义宣言等等,其中中译英作品“新财税主义宣言”在GLOBAL TIMES正式发表。能够利用业余时间加入到THU 数据派平台的翻译志愿者小组,希望能和大家一起交流分享,共同进步。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

这篇关于独家 | 简单三步实现Python脚本超参数调优(附代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/901394

相关文章

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示