Python实现哈里斯鹰优化算法(HHO)优化随机森林分类模型(RandomForestClassifier算法)项目实战

news2024/11/15 12:58:09

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。



 


1.项目背景

2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO),该算法有较强的全局搜索能力,并且需要调节的参数较少的优点。

本项目通过HHO哈里斯鹰优化算法寻找最优的参数值来优化随机森林分类模型。

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下:

 数据详情如下(部分展示):

3.数据预处理

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

关键代码:

 

3.2数据缺失查看

使用Pandas工具的info()方法查看数据信息:

从上图可以看到,总共有11个变量,数据中无缺失值,共1000条数据。

关键代码:

3.3数据描述性统计

通过Pandas工具的describe()方法来查看数据的平均值、标准差、最小值、分位数、最大值。

关键代码如下:

 

4.探索性数据分析

4.1 y变量柱状图

用Matplotlib工具的plot()方法绘制直方图:

4.2 y=1样本x1变量分布直方图

用Matplotlib工具的hist()方法绘制直方图:

 

4.3 相关性分析

 

从上图中可以看到,数值越大相关性越强,正值是正相关、负值是负相关。

5.特征工程

5.1 建立特征数据和标签数据

关键代码如下:

5.2 数据集拆分

通过train_test_split()方法按照80%训练集、20%测试集进行划分,关键代码如下:

6.构建HHO哈里斯鹰优化算法优化随机森林分类模型

主要使用HHO哈里斯鹰优化算法优化随机森林分类算法,用于目标分类。

6.1 HHO哈里斯鹰优化算法寻找的最优参数

关键代码:

每次迭代的过程数据:

 

最优参数:

 

6.2 最优参数值构建模型

 

7.模型评估

7.1 评估指标及结果

评估指标主要包括准确率、查准率、查全率、F1分值等等。

从上表可以看出,F1分值为0.9064,说明模型效果较好。

关键代码如下:

 

7.2 分类报告

 

从上图可以看出,分类为0的F1分值为0.90;分类为1的F1分值为0.91。

7.3 混淆矩阵

从上图可以看出,实际为0预测不为0的 有11个样本;实际为1预测不为1的 有8个样本,整体预测准确率良好。

8.结论与展望

综上所述,本文采用了HHO哈里斯鹰优化算法寻找随机森林分类模型的最优参数值来构建分类模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。

# Sigma计算赋值
nume = math.gamma(1 + beta) * np.sin(np.pi * beta / 2)  # 计算
deno = math.gamma((1 + beta) / 2) * beta * 2 ** ((beta - 1) / 2)  # 计算
sigma = (nume / deno) ** (1 / beta)  # Sigma赋值
# Parameter u & v
u = np.random.randn(dim) * sigma  # u参数随机赋值
v = np.random.randn(dim)  # v参数随机赋值
# 计算步骤
step = u / abs(v) ** (1 / beta)  # 计算
LF = 0.01 * step  # LF赋值


# ******************************************************************************
 
# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ
 
# 提取码:thgk
 
# ******************************************************************************


# 定义目标函数
def Fun(X_train, y_train, X_test, y_test, x, opts):
    # 参数
    alpha = 0.99  # 赋值
    beta = 1 - alpha  # 赋值
    # 原始特征数
    max_feat = len(x)
    # 选择特征数
    num_feat = np.sum(x == 1)
    # 无特征选择判断
    if num_feat == 0:  # 判断
        cost = 1  # 赋值
    else:
        # 调用错误率计算函数
        error = error_rate(X_train, y_train, X_test, y_test, x, opts)
        # 目标函数计算
        cost = alpha * error + beta * (num_feat / max_feat)

    return cost  # 返回数据

 更多项目实战,详见机器学习项目实战合集列表:

机器学习项目实战合集列表_机器学习实战项目_胖哥真不错的博客-CSDN博客


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

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

相关文章

SPSS如何检验非参数之案例实训?

文章目录 0.引言1.卡方检验2.二项检验3.双独立样本检验4.多独立样本检验5.双配对样本检验6.多配对样本检验7.游程检验8.单样本K-S检验 0.引言 因科研等多场景需要进行绘图处理,笔者对SPSS进行了学习,本文通过《SPSS统计分析从入门到精通》及其配套素材结…

文献集锦 | 非因空间多组学技术在胰腺癌肿瘤微环境中的研究策略

胰腺导管腺癌(PDAC)仍然是一种难治性疾病,5年总生存率(OS)仅不到9%,且诊断时多为晚期,治疗手段有限,除了传统的手术切除、放化疗之外,目前越来越多采用新辅助治疗的方法。利用空间组学分析平台深…

报错yarn create @umijs/umi-app Command failed, 文件名、目录名或卷标语法不正确

报错内容: 报错解决: 方法一: 1、我是用 npm 安装的 yarn : npm i yarn tyarn -g 2、我重新设定了 npm 全局包的安装位置 和 缓存位置。 // 查看 npm 全局包的安装位置 npm config get prefix // 查看 npm 缓存位置 npm co…

DTC 2023 | GBASE:构筑完备产品体系 释放数据全量价值

2023年4月7-8日,第十二届『数据技术嘉年华』(DTC 2023) 在京盛大召开。GBASE南大通用受邀参会,携核心产品亮相展区,并就数据库热门话题发表主题分享。 本届大会以“开源融合数字化——引领数据技术发展,释放数据要素价值”为议题…

mvn help:effective-pom命令的作用

无论 POM 文件中是否显示的声明,所有的 POM 均继承自一个父 POM,这个父 POM 被称为 Super POM。在pom的继承关系中,子pom可以覆盖父pom中的配置;如果子pom没有覆盖,那么父pom中的配置将会被继承。按照这个规则&#xf…

lammps教程:斜交转正交的方法

大家好,我是小马老师。 本文介绍lammps斜交模型转正交模型的方法。 多数晶体的模型都能在网上下载到对应的cif文件,但很多cif文件初始结构不是正交的,如sio2的初始结构: 对这种结构进行扩胞后,得到的模型也是一个斜交…

计组唐书第八章CPU部分课后习题

参考文章 计算机组成原理(第三版)唐朔飞-第八章CPU的结构和功能-课后习题_计算机组成原理唐朔飞课后题答案_蓝净云的博客-CSDN博客 本文是对计算机组成原理的课后题再解析。 8.1CPU有哪些功能?画出其结构框图并简要说明每个部件的作用。 容易忘掉中…

openEuler之上的K3s ARM64集群管理

K3s是CNCF认证的轻量级Kubernetes发行版,在全球拥有广泛的安装量,主要由SUSE工程师在开源社区维护。K3s除了可以单独部署外,也可以通过Kubernetes管理软件Rancher进行管理。SUSE中国团队与欧拉社区合作,以RFO SIG协作方式推动Ranc…

优思学院|品质管理是做什么工作的?和六西格玛管理有什么关系?

品质管理(或者质量管理)是一种组织和管理企业活动的方法,旨在确保产品或服务的质量符合客户的期望和需求。它涉及制定和实施各种质量控制措施,以确保生产出的产品或提供的服务符合预期标准,并且能够持续不断地进行改进…

Moonbeam操作指南|如何使用Gelato创建自动化任务

Gelato是一个Web3去中心化自动化网络,允许开发者横跨多个基于EVM兼容区块链上自动化和连接任意的智能合约执行。📑阅读中文版详细操作教程 举例来说,我们将使用MetaMask作为钱包。同时,您的钱包余额中需要有一些GLMR用于支付自动…

排序算法合集(2)

前言: 上一篇文章,我们已经讲完了冒泡排序,选择排序,插入排序和希尔排序。 那么我们今天来讲一下堆排序,快速排序和归并排序吧~ 堆排序(Heap Sort) 堆排序是一种基于完全二叉树的排序算法。堆…

ubuntu安装php8.1

ubuntu安装php8.1 设置apt库安装在 Ubuntu 22.04|20.04|18.04 上安装 PHP 8.1 扩展安装常用的php扩展完成后输入看扩展安装情况 重启php PHP8是PHP最新的Release版本,在这个版本也加入了很多新的功能。 但是在Ubuntu的默认apt库里,找不到PHP8&#xff0c…

Android14新权限机制

Android14新权限机制 在本文中,我们将了解 Android14 的新权限,该权限允许用户仅授予对选定媒体(照片/视频)的访问权限,而不是整个库。 这个新权限允许用户在我们的应用程序运行时授予部分访问权限 mediaAndroid14 or …

Unity3D:立方体贴图

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 立方体贴图 __立方体贴图__是六个正方形纹理的集合, 这些纹理代表环境中的反射。六个正方形组成一个包围着对象的虚构立方体的各面; 每个面代表沿世界轴方向…

colmap多相机重建多场景及数据库数据快速修改方法

1 colmap流程 1.1 新建项目 首先打开colmap,然后创建新的project,其中数据库目录和名称自己选定,注意不要将它放到图像目录下即可。然后images选择的是图像目录(比如我这里是guangxi/section1),这个目录下…

聊天机器人简要理解

聊天机器人 身边的同事或多或少都在聊ChatGPT,这又使得学生时代训练模型的恐惧感开始支配我。说起聊天机器人,我们先熟悉一下不同对话系统的概念。 一、对话系统分类 1、单轮对话 单轮与传统的问答系统相类似,是智能对话系统的初级应用。…

时代变迁的缩影:从天涯BBS的沦落,到媲美EXCEL的WPS后辈的腾达

昔日王者,今朝黯然 “无法访问此网站” 陪伴我们青春的天涯论坛就此真的与我们相忘于天涯。 江湖路远,不知何日才能重逢? 这是第几个了? 那个人人自由创造的时代是否真的已经逝去? 近年来网易、凤凰等论坛相继关闭。…

Docker Harbor

目录 一、Docker Harbor概述 1、Harbor的优势 2、Harbor知识点 3、Docker私有仓库架构 二、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署docker-compose服务 4、部署harbor服务 5、启动harbor ① 访问 ② 添加项目并填写项目名称 ③ 通过127.0.0.1来…

大江南北十三省,蓬门今始为君开,数字政府建设“实在”必行

引言: 推动数字中国建设是实现中国式数字化进程、抢占未来发展制高点的关键。为全面推动数字化转型在政府领域的纵深发展,各地领导不断进行数字化探索。其中,数字员工凭借流动的数据、流畅的体验,百姓少跑腿、数据多跑路特点&…

零基础也能轻松搭建Python环境和pycharm

目录:导读 引言 python环境安装 pycharm安装 设置 字体的大小: 关闭警告: 代码风格: 代码层级: ide与版本控制的整合: 插件安装:(3个) 介绍: 控制台&…