机器学习——Bagging

Bagging

方法:集成n个base learner模型,每个模型都对原始数据集进行有放回的随机采样获得随机数据集,然后并行训练。

回归问题:n个base模型进行预测,将得到的预测值取平均得到最终结果。

分类问题:n个base模型进行预测,投票选择出n个分类结果中出现次数最对的结果作为最终分类结果

代表模型:随机森林是Bagging的一个代表。它基于自助采样法从原始数据集中抽取多个样本子集,

并在每个子集上训练一个决策树,最后通过投票或平均的方式得到最终的预测结果。

随机森林在鸢尾花数据集的分类实现,代码可直接运行,数据集在文章顶部免费下载

# 导入所需的库
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.preprocessing import StandardScaler
import seaborn as sns

# 加载鸢尾花数据集
data = pd.read_excel('../data/鸢尾花分类数据集/Iris花分类.xlsx')
X = data.iloc[:, :4].values  # 选取前4列作为特征
y = data.iloc[:, 4:].values.ravel()  # 选取最后1列作为标签

# 特征缩放(标准化)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 将数据集划分为训练集和测试集
# 通常我们使用80%的数据作为训练集,20%的数据作为测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=66)

# 创建随机森林分类器实例
# n_estimators表示森林中树的数量,可以调整以获得更好的性能
randomForest = RandomForestClassifier(n_estimators=100, random_state=42)

# 使用训练数据来拟合(训练)随机森林模型
randomForest.fit(X_train, y_train)

# 使用训练好的模型对测试集进行预测
y_pred = randomForest.predict(X_test)

# 计算预测结果的准确度
accuracy = accuracy_score(y_test, y_pred)

# 打印出准确度
print("随机森林分类精度为: {:.4f}%".format(accuracy * 100))

# 获取特征重要性
feature_importances = randomForest.feature_importances_
# 获取特征名称
feature_names = data.columns[:4].tolist()
# 打印特征重要性
print("特征重要性:")
for feature, importance in zip(feature_names, feature_importances):
    print(f"{feature}: {importance:.4f}")
# 可视化特征重要性
# 创建一个DataFrame来存储特征重要程度
importances_df = pd.DataFrame({'Feature': feature_names, 'Importance': feature_importances})

# 按重要程度降序排序
importances_df = importances_df.sort_values(by='Importance', ascending=False)

# 绘制条形图
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.figure(figsize=(10, 5))
plt.bar(importances_df['Feature'], importances_df['Importance'])
plt.title('Feature Importances')
plt.ylabel('Importance')
plt.xlabel('Feature')
plt.show()

# 计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)

# 绘制混淆矩阵图
plt.figure(figsize=(7, 5))
sns.heatmap(cm, annot=True, fmt=".0f", linewidths=.5, square=True, cmap='Blues')
plt.ylabel('实际标签', fontproperties='SimHei', size=14)
plt.xlabel('预测标签', fontproperties='SimHei', size=14)
plt.title('随机森林分类器混淆矩阵', fontproperties='SimHei', size=15)
plt.show()

结果为:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于BiLSTM+Transformer混合模型实现交通流量时序预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

stm32 外部中断

1.每个IO都可以配置外部中断,中断的出发方式有上升沿、下降沿、双边沿。这个是在EXTI里配置。 2.所有IO总共分成了16组,(PA0,PB0…)、(PA1,PB1…)、(PA2,PB2…),…,(PA15…

用Python提取PowerPoint演示文稿中的音频和视频

将多种格式的媒体内容进行重新利用(如PowerPoint演示中的音频和视频)是非常有价值的。无论是创建独立的音频文件、提取视频以便在线分发,还是为了未来的使用需求进行资料归档,从演示文稿中提取这些媒体文件可以为多媒体内容的多次…

Gnu Radio抓取WiFi信号,流程图中模块功能

模块流程如图所示: GNURadio中抓取WiFi信号的流程图中各个模块的功能: UHD: USRP Source: 使用此模块配置USRP硬件进行信号采集。设置频率、增益、采样率等参数。Complex to Mag^2: 将复数IQ数据转换为幅度的平方。Delay&#xf…

神经网络(五):U2Net图像分割网络

文章目录 一、网络结构1.1第一种block结构1.2第二种block结构1.3特征图融合模块1.4损失函数1.5总体网络架构1.6代码汇总1.7普通残差块与RSU对比 二、代码复现 参考论文:U2-Net: Going deeper with nested U-structure for salient object detection   这篇文章基于…

机器学习之非监督学习(二)异常检测(基于高斯概率密度)

机器学习之非监督学习(二)异常检测(基于高斯概率密度) 0. 文章传送1.案例引入2.高斯正态分布3.异常检测算法4.异常检测 vs 监督学习5.算法优化6.代码实现 0. 文章传送 机器学习之监督学习(一)线性回归、多…

【mac开发入坑指南】能让你的终端好用一万倍的神仙组合iTerm2 + oh-my-zsh

介绍 iTerm2 iTerm2是默认终端的替代品,也是目前Mac系统下最好用的终端工具,集颜值和效率于一身。 Oh-My-Zsh Oh My Zsh 是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。 它基于Zsh 命令行&#xff0c…

N诺计算机考研-错题

D 我们熟知的Windows XP、Linux、Mac OS X等都是多用户多任务分时操作系统。 C 分布式系统:由一组独立的计算机组成的系统,这些计算机通过网络相互连接,并且对外界用户来说,它们共同工作就像是一个单一的、统一的计算平台或服务。分布式系统的关键特征: 透明性:用户和应…

FLStudio21Mac版flstudio v21.2.1.3430简体中文版下载(含Win/Mac)

给大家介绍了许多FL21版本,今天给大家介绍一款FL Studio21Mac版本,如果是Mac电脑的朋友请千万不要错过,当然我也不会忽略掉Win系统的FL,链接我会放在文章,供大家下载与分享,如果有其他问题,欢迎…

[图解]静态关系和动态关系

1 00:00:01,060 --> 00:00:04,370 首先我们来看静态关系和动态关系 2 00:00:06,160 --> 00:00:10,040 我们要尽量基于静态关系来建立动态关系 3 00:00:11,740 --> 00:00:13,740 不能够在没有这个的基础上 4 00:00:14,220 --> 00:00:17,370 没有这个的情况下就胡…

Python第一篇:Python解释器

一:python解释器 python解释器是一款程序,用于解释、执行Python源代码。 一般python解释器都是c python使用c编写的,还有j python用java编写的。 二:python下载 三:使用示例 python进入控制台,python。 三…

【2.使用VBA自动填充Excel工作表】

目录 前言什么是VBA如何使用Excel中的VBA简单基础入门控制台输出信息定义过程(功能)定义变量常用的数据类型Set循环For To 我的需求开发过程效果演示文件情况测试填充源文件测试填充目标文件 全部完整的代码sheet1中的代码,对应A公司工作表Us…

2024年最新Redis内存数据库主从复制、哨兵模式、集群部署等详细教程(更新中)

Centos 安装 Redis 检查安装 GCC 环境 [rootVM-4-17-centos ~]# gcc --version gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4) Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; no…

Cisco Secure Firewall Threat Defense Virtual 7.6.0 发布下载,新增功能概览

Cisco Secure Firewall Threat Defense Virtual 7.6.0 - 思科下一代防火墙虚拟设备 (FTDv) Firepower Threat Defense (FTD) Software for ESXi & KVM 请访问原文链接:https://sysin.org/blog/cisco-firepower-7/,查看最新版。原创作品&#xff0c…

信息安全管理工程师(工信部教育与考试中心)

在信息技术迅猛发展的时代,信息安全已经成为企业乃至国家安全不可或缺的一环。 工信部高级信息安全管理工程师认证,作为软考中的一项顶尖资格认证,对提升信息安全管理人员的专业能力、确保信息安全性具有至关重要的作用。 本文将深入探讨该…

神经网络(四):UNet图像分割网络

文章目录 一、简介二、网络结构2.1编码器部分2.2解码器部分2.3完整代码 三、实战案例 一、简介 UNet网络是一种用于图像分割的卷积神经网络,其特点是采用了U型网络结构,因此称为UNet。该网络具有编码器和解码器结构,两种结构的功能如下&#…

网络安全中的 EDR 是什么:概述和功能

专业知识:EDR、XDR、NDR 和 MDR_xdr edr ndr-CSDN博客 端点检测和响应 (EDR) 是一种先进的安全系统,用于检测、调查和解决端点上的网络攻击。它可以检查事件、检查行为并将系统恢复到攻击前的状态。EDR 使用人工智能、机器学习和威胁情报来避免再次发生攻…

矩阵分析 学习笔记4 内积与Gram矩阵

内积 定义 由于对称,第二变元线性那第一变元也线性了。例如这个:

Tomcat may not be running

一、问题背景 tomcat7运行在JDK1.7上,可启动tomcat,但是停止时报错误,如下: 二、适用条件 JDK1.7/JDK1.8 tomcat7 三、解决方法 1、查找java路径 which java 2、修改文件 找到/usr/lib/jvm/jdk1.7.0_80/jre/lib/security/j…

力扣P1706全排列问题 很好的引入暴力 递归 回溯 dfs

代码思路是受一个洛谷题解里面大佬的启发。应该算是一个dfs和回溯的入门题目&#xff0c;很好的入门题目了下面我会先给我原题解思路我想可以很快了解这个思路。下面是我自己根据力扣大佬写的。 我会进行详细讲解并配上图辅助理解大家请往下看 #include<iostream> #inc…