【Python机器学习系列】使用Hyperopt搜索随机森林分类模型最优超参数(案例+源码)

news2024/11/18 17:45:12

这是我的第342篇原创文章。

一、引言

Hyperopt是一个强大的python库,用于超参数优化,由jamesbergstra开发。Hyperopt使用贝叶斯优化的形式进行参数调整,允许你为给定模型获得最佳参数。它可以在大范围内优化具有数百个参数的模型。

在本节中,我们将介绍使用hyperopt在经典数据集 Iris 上调参的完整示例。

二、实现过程

2.1 准备数据

data = pd.read_csv(r'Dataset.csv')
df = pd.DataFrame(data)
print(df.head())

df:

图片

2.2 划分数据集

target = 'target'
features = df.columns.drop(target)
print(data["target"].value_counts()) # 顺便查看一下样本是否平衡
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)
X = X_train
y = y_train

2.3 定义搜索空间

space4rf = {
    'max_depth': hp.choice('max_depth', range(1,20)),
    'max_features': hp.choice('max_features', range(1,5)),
    'n_estimators': hp.choice('n_estimators', range(1,20)),
    'criterion': hp.choice('criterion', ["gini", "entropy"]),
    'scale': hp.choice('scale', [0, 1]),
    'normalize': hp.choice('normalize', [0, 1])
}

2.4 搜索最优超参数

best = 0
def f(params):
    global best
    acc = hyperopt_train_test(params)
    if acc > best:
        best = acc
        print ('new best:', best, params)
    return {'loss': -acc, 'status': STATUS_OK}

trials = Trials()
best = fmin(f, space4rf, algo=tpe.suggest, max_evals=300, trials=trials)
print('best:')
print(best)

结果:

图片

best:

图片

2.5 可视化

parameters = ['n_estimators', 'max_depth', 'max_features', 'criterion', 'scale', 'normalize']
cmap = plt.cm.jet
for i, val in enumerate(parameters):
    print (i, val)
    xs = np.array([t['misc']['vals'][val] for t in trials.trials]).ravel()
    ys = [-t['result']['loss'] for t in trials.trials]
    xs, ys = zip(*sorted(zip(xs, ys)))
    ys = np.array(ys)
    plt.scatter(xs, ys, s=20, linewidth=0.01, alpha=0.5, c=cmap(float(i)/len(parameters)))
    plt.title(val)
    plt.show()

结果(仅展示一个):

图片

可见'n_estimators': 16时准确率最高。

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3.0生命周期钩子(包含:Vue 2.0 和 Vue 3.0)

1、Vue 2.0 生命周期钩子 每个应用程序实例在创建时都有一系列的初始化步骤。例如,创建数据绑定、编译模板、将实例挂载到 DOM 并在数据变化时触发 DOM 更新、销毁实例等。在这个过程中会运行一些叫做生命周期钩子的函数,通过这些钩子函数可以定义业务逻…

【STM32+HAL】巡逻打靶小车

一、前言 作为电赛最爱出的小车和视觉题,将两者结合起来出题也是一个方向,故写下此文供学者参考,也作为备赛电赛的记录。 如有小伙伴想交流学习心得,欢迎加入群聊751950234,群内不定期更新代码,以及提供本…

elasticsearch的高亮查询三种模式查询及可能存在的问题

目录 高亮查询使用介绍 高亮参数 三种分析器 可能存在的查询问题 fvh查询时出现StringIndexOutOfBoundsException越界 检索高亮不正确 参考文档 高亮查询使用介绍 Elasticsearch 的高亮(highlight)可以从搜索结果中的一个或多个字段中获取突出显…

python:霍夫变换检测直线

霍夫变换检测直线 在Python中,可以使用OpenCV库来实现霍夫变换进行直线检测。 一、原理 1、霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有…

Linux中的锁

user2正在进行抢票: 4 user3正在进行抢票: 3 user1正在进行抢票: 2 user4正在进行抢票: 1 user2正在进行抢票: 0 user3正在进行抢票: -1 user1正在进行抢票: -2 int tickets10000; void* getTicket(void* args) {string usernamestatic_cast<const char*>(args);while(…

【C++篇】迈入新世界的大门——初识C++(上篇)

文章目录 C发展历史C起源C版本更新C23小故事 C在工作领域的应用C参考网站及文档书籍编程语言排行榜C难度参考文档书籍参考文档参考书籍 C第一个程序命名空间为什么要使用namespacenamespace定义及规则命名空间使用 C输入&输出名字含义 缺省参数函数重载 C发展历史 C起源 …

新手小白零基础,该怎样学习编程呢?零基础入门到精通,收藏这一篇就够了

零基础编程入门先学什么&#xff1f;编程语言有几百种&#xff0c;我们应该怎么选择。想学习编程&#xff0c;加入互联网行业&#xff0c;哪一个更有前途&#xff1f;在小白学习编程会有各种各样的问题&#xff0c;今天小编我就来为你解答。 一、怎么选择编程语言 编程语言有很…

geomagic怎么删除平面?geomagic怎么修模

在现代三维建模和3D打印技术的发展中&#xff0c;Geomagic作为一款专业的软件工具&#xff0c;广泛应用于逆向工程、产品设计和质量检测等领域。本文将详细介绍geomagic怎么删除平面&#xff1f;geomagic怎么修模&#xff0c;并探讨Geomagic的主要应用领域。通过这些内容&#…

SAP_ABAP模块-批量导入货源清单

一、业务背景 有个朋友做ECC 6.0的项目&#xff0c;期初上线时&#xff0c;有一个需求是批量导入货源清单&#xff0c;我问了好几个朋友&#xff0c;加上自己以前的积累&#xff0c;硬是没有找到一个完全能用的程序&#xff0c;下面我来说一下我遇到的问题&#xff1b; 对货源清…

【软件造价咨询】软件造价之全国各省市功能点单价分析

在软件工程领域&#xff0c;功能点是衡量软件规模的一种单位&#xff0c;功能点分析是一种广泛使用的方法&#xff0c;用于估算软件项目的规模和成本。其中功能点单价是指每功能点的软件开发费用&#xff08;单位&#xff1a;元/功能点&#xff09;。 本篇文章通过调研了20多份…

运维开发——局域网SSH访问服务器与应用

摘要 本博文主要介绍局域网SSH访问登陆虚拟机和及其应用相关配置操作。 1. 局域网SSH访问登陆虚拟机 目标&#xff1a;在局域网内A电脑使用SSH登陆B电脑上虚拟机的服务器。 前提条件:B电脑为宿主机&#xff0c;可以正常使用ssh访问虚拟机服务器&#xff0c;虚拟机网络连接方…

【面试题】文本左右对齐

文本左右对齐 学习 一、题目 这个问题是一个典型的文本排版问题。 二、解题思路 初始化&#xff1a;创建一个结果列表result来存储每一行的文本&#xff0c;以及一个临时列表current_line来存储当前正在构建的行的单词。 贪心算法填充&#xff1a;遍历words数组&#xff0c;…

Linux:开发工具(2)

一、Linux编译器-gcc/g使用 1.1 为什么我们可以用C/C做开发呢&#xff1f; 无论是在windows、还是Linux中&#xff0c;C的开发环境不仅仅指的是vs、gcc、g&#xff0c;更重要的是语言本身的头文件&#xff08;函数的声明&#xff09;和库文件&#xff08;函数的实现&#xff0…

WPF动画

补间动画&#xff1a;动画本质就是在一个时间段内对象尺寸、位移、旋转角度、缩放、颜色、透明度等属性值的连续变化。也包括图形变形的属性。时间、变化的对象、变化的值 工业应用场景&#xff1a;蚂蚁线、旋转、高度变化、指针偏移、小车 WPF动画与分类 特定对象处理动画过…

本地项目上传github

一、先在github&#xff08;GitHub: Let’s build from here GitHub&#xff09;上创建仓库 1&#xff0c;登录github后&#xff0c;点击右上角头像&#xff0c;点击 Your repositories 2&#xff0c;点击new 3&#xff0c;填写仓库名&#xff0c;假设命名 testhub&#xff0…

【机器学习】全景指南:从基础概念到实战流程的全面解析

文章目录 1.引言1.1机器学习的重要性1.2机器学习的应用范围1.3本文的内容结构 2. 机器学习的基本概念与分类2.1 机器学习的定义2.2 机器学习的分类 4. 强化学习&#xff08;Reinforcement Learning&#xff09; 3. 机器学习的工作流程3.1 数据收集与准备1. 数据源与类型2. 数据…

win10怎么查看CPU多核占用率

想要看自己有几个CPU处理器&#xff0c;可以在设备管理器里查看&#xff1a; 查看多核占用率&#xff0c;搜索任务管理器&#xff0c;然后打开&#xff0c;任务管理器——性能——CPU 右下角就可以看到我的是1个CPU&#xff0c;6个内核&#xff0c;12线程 想要看每个CPU占用…

Unity3D 自定义窗口

Unity3D 自定义窗口的实现。 自定义窗口 Unity3D 可以通过编写代码&#xff0c;扩展编辑器的菜单栏和窗口。 简单的功能可以直接一个菜单按钮实现&#xff0c;复杂的功能就需要绘制一个窗口展示更多的信息。 编辑器扩展的脚本&#xff0c;需要放在 Editor 文件夹中。 菜单栏…

用Python爬取高德地图路径规划数据——01. 指定起终点爬取-Python程序及详解

这个Python程序旨在从高德地图API获取路径规划数据&#xff0c;解析这些数据&#xff0c;并最终将其保存到JSON和CSV文件中。下面&#xff0c;我将详细讲解每个部分的功能和实现方式。 1. 导入所需的模块 import requests import json import time import csvrequests: 用于发…

spring boot自动配置

Spring自动配置是Spring框架的一个核心特性&#xff0c;它允许开发者通过在类路径下的配置类发现bean&#xff0c;而无需在应用程序中显式地进行bean的声明。Spring Boot利用这一特性&#xff0c;通过starter依赖的机制和EnableAutoConfiguration注解&#xff0c;帮助开发者快速…