随机森林算法实现分类

随机森林算法实现对编码后二进制数据的识别

1.直接先上代码!
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler
from joblib import dump, load
# 读取数据
data = pd.read_excel('/root/分类数据集.xlsx', sheet_name=0)# 提取特征和标签
binary_strings = data["编码后数据"].values
y = data["类型"]max_length = max(len(s) for s in binary_strings)
X = np.array([list(map(int, s.zfill(max_length))) for s in binary_strings])# 样本标签数值化处理
target_map = {"ldpc": 0, "han": 1, "conv": 2}
target = y.map(target_map)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, target, test_size=0.2, random_state=42)# 特征缩放
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)# 创建随机森林分类器实例
rf = RandomForestClassifier(random_state=42)# 定义超参数搜索空间
param_grid = {'n_estimators': [100, 200],  # 决策树的数量'max_depth': [None, 10, 20],  # 树的最大深度'min_samples_split': [2, 5],  # 分裂内部节点所需的最小样本数'min_samples_leaf': [1, 2],   # 叶节点所需的最小样本数'bootstrap': [True, False]    # 是否使用bootstrap样本
}# 创建GridSearchCV实例
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)# # 用GridSearchCV在给定的超参数网格上进行搜索
grid_search.fit(X_train_scaled, y_train)
# 使用找到的最佳参数的模型进行预测
best_rf = grid_search.best_estimator_
# 保存模型到文件
model_filename = 'best_random_forest64.joblib'
dump(best_rf, model_filename)
# 保存 StandardScaler
scaler_filename = 'scaler64.joblib'
dump(scaler, scaler_filename)
# 假设 max_length 已经在您的代码中计算出来了
max_length_filename = 'max_length64.joblib'
dump(max_length, max_length_filename)
y_pred = best_rf.predict(X_test_scaled)# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy on test set with best parameters: {accuracy:.2f}")
2.代码解读

这是一个典型的机器学习流程,用于构建和评估一个随机森林分类器。

  1. 导入必要的库
    • numpypandas 用于数据处理。
    • train_test_splitGridSearchCV 来自 sklearn.model_selection,用于划分数据集和超参数优化。
    • RandomForestClassifier 来自 sklearn.ensemble,是用于分类的随机森林模型。
    • accuracy_score 来自 sklearn.metrics,用于计算模型准确度。
    • StandardScaler 来自 sklearn.preprocessing,用于特征缩放。
    • dumpload 来自 joblib,用于模型和数据的保存和加载。
  2. 数据加载
    • 使用 pandasread_excel 函数从 Excel 文件中加载数据。
  3. 特征和标签提取
    • 将数据集中的“编码后数据”列转换为数值列表,并将“类型”列作为标签。
  4. 数据预处理
    • 确定最大长度以保证所有样本长度一致。
    • 使用 map 方法将标签转换为数值。
  5. 数据划分
    • 使用 train_test_split 将数据集划分为训练集和测试集。
  6. 特征缩放
    • 使用 StandardScaler 对训练集和测试集进行特征缩放。
  7. 模型初始化
    • 创建 RandomForestClassifier 实例。
  8. 超参数搜索
    • 定义一个超参数网格,包括决策树数量、树的最大深度等。
    • 使用 GridSearchCV 进行交叉验证和超参数搜索。
  9. 模型训练
    • 使用训练集数据训练模型,并找到最佳参数。
  10. 模型保存
    • 将最佳模型、标量器和最大长度保存到文件中。
  11. 模型评估
    • 使用测试集评估模型的准确度,并打印结果

通过这个过程,我们不仅展示了如何构建一个分类模型,还介绍了如何通过超参数优化来提高模型的性能。

3.数据集部分截图


就介绍到这里啦~~

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!

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

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

相关文章

自用升级centos7.2的默认Python 2.7.5为python3.8

wget https://www.python.org/ftp/python/3.8.8/Python-3.8.8.tgztar zxvf Python-3.8.8.tgz 进入刚刚解压后的目录 ./configure --prefix/data/soft/python3按照上面截图所属,需要安装gcc 安装报错需要安装 sudo yum install zlib1g-dev make -j4 make install -…

京东618全民拆快递 autojs一键脚本

京东618的最新活动为全民拆快递,因为是20周年的活动,所以可以瓜分20亿红包,想要购买一些家电的朋友可以提前关注起来,领取的红包可以直接抵扣,京东618全民拆快递软件app是专为此活动打造的一款辅助工具,可以帮你自动做任务,当然也支持淘宝的任务。 任务设置 1、自动打开…

【安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT】

安装笔记-系列文章目录 安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT 文章目录 安装笔记-系列文章目录安装笔记-20240520-Windows-在 QEMU 中尝试运行 OpenWRT 前言一、软件介绍名称:OpenWRT主页官方介绍 二、安装步骤测试版本:openwrt-23.05…

开源大模型与闭源大模型那个更好?

开源大模型和闭源大模型各有其优势和劣势,究竟哪个更好取决于具体的应用场景、组织目标、资源和能力等因素。以下是两种模型的一些优势对比: 开源大模型的优势: 1. 社区支持与合作:开源大模型能够借助全球开发者社区的力量&#x…

Java单元测试

单元测试一 一、单选题 1 public class Test{public static void main(String[] args){int i1;switch(i){case 0:System.out.println("1"(i));case 1:System.out.println("2"(i));break;case 2:System.out.println("3"(i));default…

【WEEK13】学习目标及总结【Spring Boot】【中文版】

学习目标: 学习SpringBoot 学习内容: 参考视频教程【狂神说Java】SpringBoot最新教程IDEA版通俗易懂Shiro 简介Hello World整合Spring Boot登录拦截用户认证Shiro整合MyBatisShiro请求授权的实现(前半部分) 学习时间及产出&…

算法题目记录

1.最短距离 题目简化: 明确问题 算法提示: 1.如何判断同类之间的最短距离为0 ---> 并查集路径压缩 2.如何存储任意两类的距离 ---> 邻接矩阵存储无向图 3.如何表示每个点属于哪一类 ---> 用数组id[节点]存储属于哪一类 4.如何算出任意两类…

光伏组件积灰检测系统

光伏组件积灰检测系统是一种专门用于监测光伏组件表面灰尘积累情况的设备。以下是关于该系统的详细信息和特点: 系统概述 光伏组件积灰检测系统安装在光伏板的框架上,通过实时监测光伏组件表面的灰尘厚度、分布情况和清洁度,为运维人员提供…

Codeforces Round 948 (Div. 2) D. XORificator(哈希)

题目 n*m(n*m<3e5)的矩阵&#xff0c; 实际为t(t<1e4)组样例&#xff0c;但保证sum n*m不超过3e5 你可以选一行把所有01翻转&#xff0c;问最多可以让多少列只有一个1&#xff0c;然后把你翻转的行输出 思路来源 其实题还挺裸的&#xff0c;教了一下潘老师&#xff0…

UIAbility的使用

UIAbility概述 UIAbility是一种包含用户界面的应用组件&#xff0c;主要用于和用户进行交互。UIAbility也是系统调度的单元&#xff0c;为应用提供一系列的窗口&#xff0c;应用在这些窗口里绘制用户交互界面。 每一个UIAbility实例&#xff0c;都对应于一个最近任务列表中的任…

CART 算法【python,机器学习,算法】

CART(Classification and Regression Tree)分类回归树。使用基尼指数计算得到树的节点。基尼指数表示系统整体的不确定性&#xff0c; 不确定性越大&#xff0c;基尼指数越大&#xff0c;所以在决策树中&#xff0c;将加权基尼系数最小的特征作为树的决策节点。 公式推导 基尼…

28【Aseprite 作图】苹果——拆解

1 画苹果框架 左边:第一行 7 第二行 2 第三 四行1 竖着7行 竖着2行 竖着1 、1 行 横着2个 横着4个 苹果可以是左右对称的,完成上述后,水平翻转到右边 2 枝叶 第一行1 左边 2 3 4 行,各1 第5行,竖着4个 再横着3个 右边 竖着3个,然后斜着2个,然后斜着1个 最上面的,两个…

Java中的JSP与Servlet的详细解释

一、技术难点 在Java Web开发中&#xff0c;JSP&#xff08;Java Server Pages&#xff09;和Servlet是两个核心概念&#xff0c;它们各自有其技术难点。 JSP技术难点&#xff1a; JSP页面的生命周期管理&#xff1a;JSP页面在首次被访问时会被转换为Servlet&#xff0c;然后…

AI大模型下的微服务会有什么?

在人工智能领域&#xff0c;会使用到许多微服务来处理不同的任务。"微服务"指的是将一个大型应用拆分成一系列小的服务&#xff0c;每个服务运行在其独立的进程中&#xff0c;并通过轻量级的机制&#xff08;通常是HTTP RESTful API&#xff09;与其他服务通信。每个…

靶机Moonraker_1练习报告

Moonraker: 1靶机练习实践报告 一、安装靶机 靶机是.ova文件&#xff0c;需要用VirtualBox打开&#xff0c;但我习惯于使用VMWare,因此修改靶机文件&#xff0c;使其适用于VMWare打开。 解压ova文件&#xff0c;得到.ovf文件和.vmdk文件。 直接用VMWare打开.ovf文件即可。 …

webserver服务器从零搭建到上线(七)|Channel通道类和Poller抽象类

TcpServer是我们整个编写服务器的入口&#xff0c;其中有一个很重要的类&#xff1a;EventLoop事件分发器。 其实我们就可以把EventLoop当做我们的epoll_wait&#xff0c;它主要管理类一个Poller类&#xff0c;我们看名字就可以知道&#xff0c;Poller类应该封装了Epoll本身&a…

【服务器报错】Pycharm运行服务器代码提示 can‘t open file “本地文件路径“

1. 问题 Pycharm连接远程服务器&#xff0c;代码已经同步&#xff0c;运行时候报错 #模拟报错 bash: line 0: cd: G:/python/hhh/Hi: No such file or directory /home/hhh/anaconda3/envs/hard/bin/python: cant open file G:/python/hhh/hi/hei.py: [Errno 2] No such file…

顶级域名、主域名、子域名

在互联网上&#xff0c;域名系统(DNS)用于将人类可读的域名(如www.example.com映射到服务器的IP地址 域名可以分为多个部分&#xff0c;通常包括主域名(PrimaryDomain)和子域名(Subdomain)。 顶级域名 是域名系统的最高级别&#xff0c;通常代表特定的组织类型或国家 .com、…

springMVC工作流程

大家好&#xff0c;这里是教授.F 1.浏览器会先发送请求url&#xff0c;前端控制器/中央控制器/分发器&#xff08;也就是DispatcherServlet&#xff09;进行获取。 2.此时前端控制器会调用HandlerMapping处理器映射器&#xff0c;然后返回处理器执行器链&#xff08;HandlerExe…