Python实现PSO粒子群优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

news2024/11/17 9:18:50

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




1.项目背景

PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆虫、兽群、鸟群和鱼群等的群集行为,这些群体按照一种合作的方式寻找食物,群体中的每个成员通过学习它自身的经验和其他成员的经验来不断改变其搜索模式。

本项目通过PSO粒子群优化随机森林分类算法来构建分类模型。

2.数据获取

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

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

 

3.数据预处理

3.1 用Pandas工具查看数据

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

关键代码:

 

3.2数据缺失查看

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

从上图可以看到,总共有9个变量,数据中无缺失值,共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.构建PSO粒子群优化随机森林分类模型

主要使用PSO粒子群算法优化随机森林分类算法,用于目标分类。

6.1 PSO粒子群算法寻找最优参数值

最优参数:

6.2 最优参数值构建模型 

 

7.模型评估

7.1评估指标及结果

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

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

关键代码如下:

7.2 分类报告

 

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

7.3 混淆矩阵

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

8.结论与展望

综上所述,本项目采用了PSO粒子群算法寻找随机森林分类算法的最优参数值来构建分类模型,最终证明了我们提出的模型效果良好。此模型可用于日常产品的预测。

#  y变量柱状图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
# kind='bar' 绘制柱状图
df['y'].value_counts().plot(kind='bar')
plt.xlabel("y变量")  # 设置x轴坐标名称
plt.ylabel("数量")  # 设置y轴坐标名称
plt.title('y变量柱状图')  # 设置标题名称



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



if abs(params[0]) > 0:  # 判断取值
        max_depth = int(abs(params[0]) / 100) + 2  # 赋值
else:
        max_depth = int(abs(params[0]) / 100) + 5  # 赋值

if abs(params[1]) > 0:  # 判断取值
        min_samples_leaf = int(abs(params[1])) + 1  # 赋值
else:
        min_samples_leaf = int(abs(params[1])) + 5  # 赋值

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

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


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

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

相关文章

WH5097D有源矩阵驱动的Mini LED背光应用方案

Miniled技术为lcd的全面升级版,Miniled的背光层在单位面积内可以容纳更多LED,从而大大提高背光源数量,因此可以进行区域亮度调节的设计,从而在个别区域实现关闭led从而达到完全的黑色,不仅减小了功耗,而且由…

【KingbaseES】如何查看表结构

SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_name test_szie;

梅雨季“霉”烦恼,防潮自救指南请收好

魔都的雨下个不停,天气也异常闷热,原来是上海已经入梅了。“雨连连、湿哒哒、闷兮兮”的梅雨季,湿漉漉的空气,感觉身体也跟着“发霉”。不想做梅雨季最“潮”人,赶紧码住这份抗“霉”攻略。 梅雨季最大的特点是空气湿度…

数据库DDL

目录 DDL数据库的操作 SQL表操作: 数据库的数据类型: 数值类型​编辑 字符串类型 日期时间类型 DDL表操作 - 修改​编辑 总结: DDL数据库的操作 演示: SQL表操作: 数据库的数据类型: 数值类型 字符串…

Person相关系数

衡量两个变量线性相关程度。先画散点图看是否为线性相关,相关系数才有用。 总体:要考察对象的全部个体 样本:从总体中所抽取的一部分个体 用样本的统计量估计总体的统计量 总体Person相关系数 协方差Cov(X,Y)反映X、Y的相关性 Person相关系…

zabbix 应用(二)

目录 一:部署 zabbix 代理服务器 1、准备环境 2、 设置 zabbix 的下载源,安装 zabbix-proxy 3、 部署数据库,要求 MySQL 5.7 或 Mariadb 10.5 及以上版本 4、 初始化数据库 5、创建数据库 指定字符集,创建 zabbix 数据库用户…

从零开始的知识图谱生活,构建一个百科知识图谱,完成基于Deepdive的知识抽取、基于ES的简单语义搜索、基于 REfO 的简单KBQA

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实…

华为云“All in ”大模型:释放人工智能巨能!看低代码开发平台引领未来

前言 截至目前,全球已发布数百个大模型,我国年内已发布80多个大模型,面向消费者端的应用百花齐放。我们认为,大模型在行业里多作贡献,才是正确的道路。 当下发展现状 今年以来,人工智能的发展因ChatGPT进入…

MAC |如何在mac上阅读caj文件?

背景:工作群中老板突然发了一个caj的论文过来,让大家阅读学习。 于是就开启了解决:在mac上阅读caj文件之旅。 首先,尝试了这篇文章的方法: 教你如何在Mac上打开CAJ格式的文件_普通网友的博客-CSDN博客 以失败告终。…

【sql注入-报错注入1】extractvalue()函数 报错注入

目录 extractvalue()报错注入 一、语法介绍&#xff1a; 二、报错原因 网络安全小圈子 &#xff08;***注&#xff1a;注意看版本要求&#xff09; extractvalue()报错注入 一、语法介绍&#xff1a; 版本&#xff1a; MySQL<5.0.x 语法&#xff1a; EXTRACTVALUE(…

地址解析协议 (ARP)

地址解析协议&#xff08;ARP&#xff09;是互联网协议&#xff08;IP&#xff09;套件的关键第 2 层协议&#xff0c;可将 IP 地址转换为媒体访问控制&#xff08;MAC&#xff09;地址&#xff08;IP – MAC&#xff09;&#xff0c;ARP 在实现网络连接方面发挥着不可或缺的作…

赛效:如何一键生成印章

1&#xff1a;在电脑上打开标小智印章生成器&#xff0c;点击输入框&#xff0c;在输入框里输入印章内容。 2&#xff1a;文本内容输入后&#xff0c;点击右侧的“生成按钮”。 3&#xff1a;在生成的印章模板里&#xff0c;挑一个满意的&#xff0c;鼠标放上去就可以看到下载按…

安装Nodejs、NPM、Vue脚手架详细教程

一、安装Nodejs 查看自己电脑是否安装nodejs node --version我这里已经下载过了&#xff0c;没有下载过的会提示该命令不存在 可以到官网下载一下 https://nodejs.org/en/download/ 不要安装在中文路径下 二、安装NPM 如果你安装了nodejs–默认会安装NPM. npm --version…

国内好用的CRM框架推荐和介绍

一、如何选择CRM管理系统的方法 选择适合自己的CRM管理系统是企业客户关系管理的重要决策之一&#xff0c;需要根据自身的需求和实际情况进行选择。下面介绍几个选择比较好的CRM管理系统的方法&#xff1a; 1. 确定功能需求&#xff1a;企业需要根据自身的业务特点和管理需求…

OpenHarmony之小熊派Bearpi-hm_micro_small刷机问题避坑

目录 1.概述2.注意事项3.发现问题4.解决问题 1.概述 最近大家都知道&#xff0c;华为出了一个中国的手机操作系统HarmonyOS,本人很是激动&#xff0c;因为中国终于有了自己的手机操作系统&#xff0c;而且我去了解了下&#xff0c;发现完全不同于Android和IOS操作系统&#xf…

集合面试题--LinkedList数组

目录 单向链表 介绍 时间复杂度分析 双向链表 时间复杂度分析 总结 ArrayList和LinkedList的区别是什么&#xff1f; 单向链表 介绍 时间复杂度分析 双向链表 时间复杂度分析 总结 ArrayList和LinkedList的区别是什么&#xff1f;

Drools用户手册翻译——第三章 构建,部署,应用和运行(一)介绍与构建

这一章内容颇多&#xff0c;就是一个构建&#xff0c;就翻译了好久&#xff0c;虽然说之前用过drools&#xff0c;但是里面kie相关的很多类都比较混乱&#xff0c;翻译完这个用户手册&#xff0c;感觉清晰了许多&#xff0c;因为实在是太多了&#xff0c;如果你也有相同的情况&…

pytorch grid_sample易错点

pytorch grid_sample易错点 易错点是&#xff1a; grid_sample函数中, x对应w, y对应h !! grid_sample函数中, x对应w, y对应h !! grid_sample函数中, x对应w, y对应h !! 函数的作用 output的size和grid的size是一样的&#xff0c;所以output中某一位置(h, w)的值&#xff0c…

华为网络基础

目录 一、封装和解封装和一些通信基本概念 1、带宽&#xff1a; 2、延迟&#xff1a; 3,分层概念 4.单位换算 5.数据的封装 6.介质 二、数据链路和mac地址 1.基本概念 2.帧的内容和区别 2.1. e2帧格式 2.2. ieee802.3帧格式 3.网络层的数据链路层相关的一些概念 …

docker+robot framework+selenium并发web应用UI自动化测试实践

自己在日常测试中&#xff0c;会搭建UI自动化测试框架来进行web应用的回归测试&#xff0c;在这过程中遇到了许多问题&#xff0c;如测试脚本和执行机不分离&#xff0c;串行测试效率低下&#xff0c;环境搭建麻烦等问题。在这个过程中&#xff0c;自己也在网上看一些前辈的搭建…