scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化

2023-11-01

scikit keras

Hyperparameter optimization is often one of the final steps in a data science project. Once you have a shortlist of promising models you will want to fine-tune them so that they perform better on your particular dataset.

超参数优化通常是数据科学项目中的最后步骤之一。 一旦您有一个有前途的模型的清单,您将需要对其进行微调,以使其在您的特定数据集上表现更好。

In this post, we will go over three techniques used to find optimal hyperparameters with examples on how to implement them on models in Scikit-Learn and then finally a neural network in Keras. The three techniques we will discuss are as follows:

在本文中,我们将介绍三种用于查找最佳超参数的技术,并举例说明如何在Scikit-Learn中的模型上实现它们,然后在Keras中的神经网络中实现它们。 我们将讨论的三种技术如下:

  • Grid Search

    网格搜索
  • Randomized Search

    随机搜寻
  • Bayesian Optimization

    贝叶斯优化

You can view the jupyter notebook here.

您可以在此处查看jupyter笔记本。

网格搜索 (Grid Search)

One option would be to fiddle around with the hyperparameters manually, until you find a great combination of hyperparameter values that optimize your performance metric. This would be very tedious work, and you may not have time to explore many combinations.

一种选择是手动摆弄超参数,直到找到可以优化性能指标的超参数值的良好组合。 这将是非常繁琐的工作,并且您可能没有时间探索许多组合。

Instead, you should get Scikit-Learn’s GridSearchCV to do it for you. All you have to do is tell it which hyperparameters you want to experiment with and what values to try out, and it will use cross-validation to evaluate all the possible combinations of hyperparameter values.

相反,您应该获取Scikit-Learn的GridSearchCV来为您完成此任务。 您所要做的就是告诉它您要尝试使用哪些超参数以及要尝试哪些值,然后它将使用交叉验证来评估超参数值的所有可能组合。

Let's work through an example where we use GridSearchCV to search for the best combination of hyperparameter values for a RandomForestClassifier trained using the popular MNIST dataset.

让我们来看一个示例,其中我们使用GridSearchCV搜索使用流行的MNIST数据集训练的RandomForestClassifier的超参数值的最佳组合。

To give you a feel for the complexity of the classification task, the figure below shows a few images from the MNIST dataset:

为了让您感觉到分类任务的复杂性,下图显示了MNIST数据集中的一些图像:

To implement GridSearchCV we need to define a few things. First being the hyperparameters we want to experiment with and the values we want to try out. Below we specify this in a dictionary called param_grid.

为了实现GridSearchCV我们需要定义一些东西。 首先是我们要尝试的超参数以及我们要尝试的值。 下面我们在名为param_grid的字典中指定此param_grid

The param_grid tells Scikit-Learn to evaluate 1 x 2 x 2 x 2 x 2 x 2 = 32 combinations of bootstrap, max_depth, max_features, min_samples_leaf, min_samples_split and n_estimators hyperparameters specified. The grid search will explore 32 combinations of RandomForestClassifier’s hyperparameter values, and it will train each model 5 times (since we are using five-fold cross-validation). In other words, all in all, there will be 32 x 5 = 160 rounds of training! It may take a long time, but when it is done you can get the best combination of hyperparameters like this:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化 的相关文章

  • toArray 与预先确定大小的数组

    使用时ar toArray new String ar size 安卓工作室3 2 1警告预先确定大小的数组并建议空数组 有两种方式将集合转换为数组 使用 预先确定大小的数组 如 c toArray new String c size 或使
  • 如何在Python中手动对数字列表进行排序?

    规格 Ubuntu 13 04 Python 3 3 1 背景 Python的初学者 遇到了这个 手动排序 问题 我被要求做的事情 让用户输入 3 个数值并将它们存储在 3 个不同的变量中 不使用列表或排序算法 手动将这 3 个数字从小到大
  • 右键单击 QPushButton 上的 contextMenu

    对于我的应用程序 我在 Qt Designer 中创建了一个 GUI 并将其转换为 python 2 6 代码 关于一些QPushButton 与设计器创建 我想添加右键单击上下文菜单 菜单选项取决于应用程序状态 如何实现这样的上下文菜单
  • CompletableFuture SupplyAsync

    我刚刚开始探索 Java 8 的一些并发特性 让我有点困惑的一件事是这两个静态方法 CompletableFuture
  • 错误:类 kotlin.reflect.jvm.internal.FunctionCaller$FieldSetter

    我已尝试一切方法来消除此错误 但它不断出现 Class kotlin reflect jvm internal FunctionCaller FieldSetter can not access a member of class com
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • matplotlib vlines 图中未应用 y 轴的最小值

    我正在 matplotlib 中绘制 vlines 图 数据集中的所有 y 值如下 gt 0 我希望 y 轴最底部的刻度能够读取0 但相反 我得到 500 这是代码 usr bin env python import numpy as np
  • ImproperlyConfigured at / 不允许空静态前缀 - Django

    我正在使用 Django 上传 显示图像 该网站部署在 Heroku 上 下列的this https coderwall com p bz0sng教程我能够成功上传图像 但是 图像并未显示在模板中 然后我了解到我的 urls py 末尾应该
  • 为什么 pip 已经是最新的了却要求我升级?

    我全新安装了 python 3 7 1 64 位 并使用最新的 pyCharm 作为我的 IDE 我在这台机器上没有安装其他 python 我去安装 numpy 并收到以下消息 venv C Users John PycharmProjec
  • 类变量:“类列表”与“类布尔值”[重复]

    这个问题在这里已经有答案了 我不明白以下示例的区别 一次类的实例可以更改另一个实例的类变量 而另一次则不能 示例1 class MyClass object mylist def add self self mylist append 1
  • Kivy TextInput 水平和垂直对齐(文本居中)

    如何在 Kivy 的 TextInput 中水平居中文本 I have the following screen But I want to centralize my text like this 这是我的 kv 语言的一部分 BoxLa
  • 避免加密和编码的 URL 字符串中的换行符

    我正在尝试实现一个简单的字符串编码器来混淆 URL 字符串的某些部分 以防止它们被用户弄乱 我使用的代码几乎与示例中的相同JCA指南 http docs oracle com javase 6 docs technotes guides s
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • 本地主机上的 Google App Engine GQL 查询

    我正在 Google App Engine Windows 上的 SDK 版本 1 7 0 上开发一个应用程序 我需要经常测试该应用程序 并且此测试涉及数据存储上的大量 GQL 查询 您可以在 App Engine 管理界面的浏览器中在线运
  • 如何使用 python 模块的多个 git 分支?

    我想使用 git 来同时处理我正在编写的模块中的多个功能 我目前正在使用 SVN 只有一个工作区 因此我的 PYTHONPATH 上只有该工作区 我意识到这不太理想 所以我想知道是否有人可以建议一种更 正确 的方法来做到这一点 让我用一个假
  • 让 subclipse 在 Ubuntu 64 和 Indigo 上工作 - 加载了不兼容的 JavaHL 库。需要 1.7.x 或更高版本

    我该如何解决 我在 ubuntu 64 上使用 Eclipse indigo 我安装了http subclipse tigris org update 1 8 x http subclipse tigris org update 1 8 x
  • 关闭正在运行代码的 IPython Notebook

    怎么运行的 我在 IPython Notebook 中运行了一些代码 一些迭代工作 我不小心关闭了正在运行的笔记本的浏览器 但回到 IPython 仪表板 我发现这个特定的笔记本尚未关闭 所以如果我再次打开笔记本 我会在它正在执行的代码前面
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras
  • 在Python中使用os.makedirs创建目录时出现权限问题

    我只是想处理上传的文件并将其写入工作目录中 该目录的名称是系统时间戳 问题是我想以完全权限创建该目录 777 但我不能 使用以下代码创建的目录755权限 def handle uploaded file upfile cTimeStamp

随机推荐

  • 关于LLVM IR和Valgrind 中间语言区别

    1 LLVM和Valgrind简介 LLVM Low Level VirtualMachine 是伊利诺伊州立大学香槟分校的ChrisLattner主持开发的一个编译器框架 随着ChrisLattner去苹果公司 LLVM作为苹果公司官方支
  • pymongo使用update_many方法批量更新记录

    使用的主要函数是 coll update many 当需要对同一批数据进行更新的时候 可以用这个函数 使用时 coll update many 筛选这一批数据需要查询的内容 字典类型 set 更新的内容 字典类型 使用方法如示例代码 示例代
  • 从0搭建Hyperledger Fabric2.5环境

    Hyperledger Fabric 2 5环境搭建 一 Linux环境准备 root登录 yum y install git curl docker docker compose tree yum y install autoconf a
  • NSNumber NSValue与NSDate 详解

    我们在编码中 很多时候需要将C里面原生的数据封装成对象 这样可以用NSDictionary或者NSArray来存取访问 尤其是一些做适配的情况下 这种封装是不可避免的 Objective C提供了不少类可以帮助我们 比较常见的是NSNumb
  • [转载]Stanford华人教授李飞飞写给她学生的一封信,如何做好研究以及写好PA

    De mystifying Good Research and Good Papers By Fei Fei Li 2009 03 01 Please remember this 1000 computer vision papers ge
  • 算法——动态规划算法

    动态规划的核心思路 动态规划的解题核心主要分为两步 第一步 定义问题 有的问题过于抽象 或者过于啰嗦干扰我们解题的思路 我们要做的就是将题干中的问题转化成一系列同类问题的某个解的情况 比如说 题目 求一个数列中最大连续子序列的和 我们要将这
  • tomcat部署项目

    今天总算是把部署tomcat部署项目的几种方式实验了一下 一 1 下载 Tomcat 服务器 官网下载地址 http tomcat apache org 2 启动并部署 Tomcat 服务器 解压 tomcat 安装包到一个非中文目录下 配
  • 微服务架构详解

    一 微服务架构的由来 在微服务架构出现之前 最常用的架构就是单体架构 俗称 一个jar war 包打天下 在一个jar包工程中 采用MVC架构 分为表现层 业务层 数据访问层 所有的业务模块 都放在这个工程中集成 如下图所示 随着软件行业规
  • DS18B20温度传感器

    1 DS18B20 单线数字温度传感器 即 一线器件 其具有独特的优点 采用单总线的接口方式 与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯 单总线具有经济性好 抗干扰能力强 适合于恶劣环境的现场温度测量 测量
  • 【前端】ant design中树形控件的父子节点受控实现

    前言 1 ant design的树形控件里面先设置好checkStrictly属性 即checkable 状态下节点选择完全受控 父子节点选中状态不再关联 这样的话 onCheck函数中的checkedKeys参数打印出来它是一个有chek
  • conda添加清华镜像源

    Anaconda 是一个用于科学计算的 Python 发行版 支持 Linux Mac Windows 包含了众多流行的科学计算 数据分析的 Python 包 Anaconda 安装包可以到 清华镜像源下载anaconda 下载 TUNA
  • 异步赠书:10月Python畅销书升级

    2018年最新活动 免费赠书 1 关注微信号 异步图书 2 邀请10位好友关注10天后 填写下方表单登记信息 即可免费获得异步图书一本 异步社区选书网址 www epubit com 点击登记免费图书邮寄信息 活动已结束 最新活动地址 ht
  • LeetCode 1689. 十-二进制数的最少数目

    如果一个十进制数字不含任何前导零 且每一位上的数字不是 0 就是 1 那么该数字就是一个 十 二进制数 例如 101 和 1100 都是 十 二进制数 而 112 和 3001 不是 给你一个表示十进制整数的字符串 n 返回和为 n 的 十
  • idea 通过访问路径快速定位到Controller方法

    目录 问题原因 解决方案 RestfulToolkit插件 使用方式 windows MAC 扩展 效果展示 问题原因 我们在调试 或者某个接口出现bug首先知道和拿到的一般是接口路径 系统运行久了 模块会很多 接口也会很多 找起来很麻烦
  • Strus2+Spring整合笔记

    1 拷贝Struts2 jar包和Spring jar包到 WEB INF lib目录下 2 配置Strust2核心控制器 配置文件 3 为第三步的Spring提供配置文件 4 添加Struts2 Spring整合的插件包 5 在appCt
  • 虚拟IP是什么?

    要是单讲解虚拟 IP 理解起来很困难 所以干脆把 动态 IP 固定 IP 实体 IP 与虚拟 IP都讲解一下 加深理解和知识扩展 实体 IP 在网络的世界里 为了要辨识每一部计算机的位置 因此有了计算机 IP 位址的定义 一个 IP 就好似
  • 2023-5-16第十六天

    permanent永久的 temporary instruction教授 传授 impart教授 initiate教授 接纳 reside居住于 resident居民 recover恢复 找回 laternate交替的 轮流的 interp
  • 小米官网项目制作——javascript知识分享上

    目录 前言 一 整体架构 二 弹出的盒子 1 定位盒子 2 弹出效果 3 其他细节 三 下拉 展开的切换菜单 1 放置盒子 2 切换盒子 3 添加索引 4 侧边展开的盒子 四 轮播图 1 本体的部件 2 轮播图 3 节流阀 4 其他的细节
  • Docker搭建Seata环境

    Docker搭建Seata环境 添加seata需要的数据库表 直接点击 mysql数据库 oracle数据库 postgresql数据库 为业务数据库也添加一个undo log表 Seata的AT模式下之所以在第一阶段直接提交事务 依赖的是
  • scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化

    scikit keras Hyperparameter optimization is often one of the final steps in a data science project Once you have a short