机器学习_10、集成学习-Bagging(自举汇聚法)
Bagging(自举汇聚法)
Bagging(Bootstrap Aggregating,自举汇聚法)是一种集成学习方法,由Leo Breiman于1996年提出。它旨在通过结合多个模型来提高单个预测模型的稳定性和准确性。Bagging方法特别适用于减少高方差模型(如决策树)的过拟合问题,从而提高模型的泛化能力。
工作原理
Bagging的核心思想是通过并行地训练多个独立的预测模型,并将它们的预测结果进行汇总(对于分类任务通常采用投票机制,对于回归任务则采用平均),以此来提高整体模型的预测性能。具体步骤如下:
-
自助采样(Bootstrap sampling):从原始训练数据集中使用有放回的抽样方法随机选取N个样本,形成一个新的训练集。这个过程重复K次,生成K个不同的训练集。这些训练集之间可能有重叠的样本。
-
独立训练:对每个生成的训练集,独立地训练一个基预测模型。这些基模型可以是任何类型的模型,但在实践中常用决策树。每个模型只看到数据的一部分子集,这有助于模型学习到数据的不同方面。
-
汇总预测:
- 对于分类问题,最终的预测结果通常是通过投票机制得到的,即选择出现次数最多的类别标签作为最终预测。
- 对于回归问题,最终的预测结果是通过计算所有单个模型预测值的平均值得到的。
优点
- 减少方差:Bagging通过构建多个模型并汇总它们的预测结果,可以有效减少模型的方差,降低过拟合风险。
- 提高鲁棒性:即使基模型的性能不是很好,通过Bagging也能提高整体模型的稳定性和准确性。
- 易于实现并行化:由于各个基模型的训练是相互独立的,因此Bagging方法很容易进行并行化处理,提高计算效率。
- 灵活性:Bagging方法可以与各种类型的预测模型结合使用,增加了方法的通用性。
应用场景
Bagging方法广泛应用于各种机器学习任务中,尤其是那些模型容易受到过拟合影响的场景。随机森林(Random Forest)就是一种基于决策树和Bagging原理的集成学习算法,它在多个领域内都表现出了优异的性能,如金融风险评估、医学诊断、图像识别等。此外,Bagging技术也适用于提升那些本身就表现不错但希望进一步提高准确度的模型性能。
#coding=utf-8
#BaggingClassifier.py
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import BaggingClassifier# 加载葡萄酒数据集
wine = load_wine()
X, y = wine.data, wine.target# 划分训练集与测试集
X_train, X_test, y_train, y_test = \train_test_split(X, y, stratify=y, random_state=0)# 创建基本分类模型对象
gnb_clf = GaussianNB()# 创建集成学习器
bc = BaggingClassifier(gnb_clf, n_estimators=20,max_samples=0.5, bootstrap=True,random_state=0)
# 训练模型
bc.fit(X_train, y_train)
print("训练集准确率:",bc.score(X_train,y_train),sep="")
print("测试集准确率:",bc.score(X_test,y_test),sep="")
print("测试集前三个样本的预测标签:",bc.predict(X_test[:3]))
print("测试集前三个样本的真实标签:",y_test[:3])
print("测试集前三个样本的标签预测概率:\n",bc.predict_proba(X_test[:3]),sep="")
相关文章:
机器学习_10、集成学习-Bagging(自举汇聚法)
Bagging(自举汇聚法) Bagging(Bootstrap Aggregating,自举汇聚法)是一种集成学习方法,由Leo Breiman于1996年提出。它旨在通过结合多个模型来提高单个预测模型的稳定性和准确性。Bagging方法特别适用于减少…...
【力扣hot100】刷题笔记Day20
前言 今天学习了一句话“自己如果不努力,屎都吃不上热乎的”,话糙理不糙,与君共勉 35. 搜索插入位置 - 力扣(LeetCode) 二分查找 class Solution:def searchInsert(self, nums: List[int], target: int) -> int:n…...
Redis 之八:Jdeis API 的使用(Java 操作 Redis)
Jedis API 使用 Jedis 是 Redis 官方推荐的 Java 客户端,它提供了一套丰富的 API 来操作 Redis 服务器。通过 Jedis API,开发者可以方便地在 Java 应用程序中执行 Redis 的命令来实现数据的增删查改以及各种复杂的数据结构操作。 以下是一些基本的 Jedis…...
Docker 应用入门
一、Docker产生的意义 1‘解决环境配置难题:在软件开发中最大的麻烦事之一,就是环境配置。为了跑我们的程序需要装各种插件,操作系统差异、不同的版本插件都可能对程序产生影响。于是只能说:程序在我电脑上跑是正常的。 2’解决资…...
朱维群将出席用碳不排碳碳中和顶层科技路线设计开发
演讲嘉宾:朱维群 演讲题目:“用碳不排碳”碳中和顶层科技路线设计开发 简介 姓名:朱维群 性别:男 出生日期:1961-09-09 职称:教授 1998年毕业于大连理工大学精细化工国家重点实验室精细化工专业&#x…...
linux如何查看磁盘占用情况
要查看Linux系统中磁盘的占用情况,可以使用一些命令来获取相关信息。以下是一些常用的命令: df命令: df命令用于显示文件系统的磁盘空间使用情况,包括磁盘分区的总空间、已用空间、可用空间等信息。 df -h使用 -h 参数可以以人类可…...
【C++庖丁解牛】类与对象
📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.面向过程和面向对象…...
在什么时候企业档案才会发生调整
档案在企业中通常会调整在以下几个时刻: 1. 入职时:员工入职时,企业会要求员工提供个人档案,包括身份证件、学历证明、工作经历等相关文件。 2. 离职时:员工离职时,企业会整理员工的离职档案,包…...
Linux或Windows下判断socket连接状态
前言 场景:客户端程序需要实时知道和服务器的连接状态。比较通用的做法应用层是采用心跳机制,每隔一端时间发送心跳能回复说明服务器正常。 实际应用场景中,服务端和客户端并不是一家厂商的,比如说笔者这种情况,服务端…...
编译链接实战(25)gcc ASAN、MSAN检测内存越界、泄露、使用未初始化内存等内存相关错误
文章目录 1 ASAN1.1 介绍1.2 原理编译时插桩模块运行时库2 检测示例2.1 内存越界2.2 内存泄露内存泄露检测原理作用域外访问2.3 使用已经释放的内存2.4 将漏洞信息输出文件3 MSAN1 ASAN 1.1 介绍 -fsanitize=address是一个编译器选项,用于启用AddressSanitizer(地址...
[HackMyVM]靶场 VivifyTech
kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Unk…...
软考高级系统分析师:关联关系、依赖关系、实现关系和泛化关系概念和例题
一、AI 解读 关联关系、依赖关系、实现关系和泛化关系是面向对象设计中的四种基本关系。它们在类与类之间建立不同类型的联系,以反映对象间的相互作用、依赖和继承关系。下面我将使用表格的形式来解释这四种关系的概念和它们之间的区别: 关系类型概念特…...
设计模式学习笔记 - 面向对象 - 9.实践:如何进行面向对象分析、设计与编码
1.如何对接口鉴权这样一个功能开发做面向对象分析 本章会结合一个真实的案例,从基础的需求分析、职责划分、类的定义、交互、组装运行讲起,将最基础的面向对象分析(00A)、设计(00D)、编程(00P&…...
【iOS ARKit】RealityKit 同步机制
协作 Session 可以很方便地实现多用户之间的AR体验实时共享,但开发者需要自行负责并确保AR场景的完整性,自行负责虚拟物体的创建与销毁。为简化同步操作,RealityKit 内建了同步机制,RealityKit 同步机制基于 Multipeer Connectivi…...
【数据结构与算法】整数二分
问题描述 对一个排好序的数组,要求找到大于等于7的最小位置和小于等于7的最大位置 大于等于7的最小位置 易知从某个点开始到最右边的边界都满足条件,我们要找到这个区域的最左边的点。 开始二分! left指针指向最左边界,right…...
java项目打包运行报异常:xxxxx-1.0-SNAPSHOT.jar中没有主清单属性
pom.xml中加入这段话即可 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.4</version><executions><execution><…...
MAC-键盘command快捷键、设置windows快捷键
在 Windows PC 专用键盘上,请用 Alt 键代替 Option 键,用 Ctrl 键或 Windows 标志键代替 Command 键。 Mac 键盘快捷键 - 官方 Apple 支持 (中国) 设置windows快捷键 使用mac外接适用于windows的键盘时,如何设置快捷键?_mac外…...
C++ 补充之常用遍历算法
C遍历算法和原理 C标准库提供了丰富的遍历算法,涵盖了各种不同的功能。以下是一些常见的C遍历算法以及它们的概念和原理的简要讲解: for_each:对容器中的每个元素应用指定的函数。 概念:对于给定的容器和一个可调用对象ÿ…...
【Linux杂货铺】调试工具gdb的使用
目录 🌈前言🌈 📁背景介绍 📁 使用 list [行号] / [函数名] run/r break/b [行号] / [函数名] info break disable break enable break delete break [断点编号] next/n step/s continue/c finish print/p [变量…...
FL Studio Producer Edition2024中文进阶版Win/Mac
FL Studio Producer Edition,特别是其【中文进阶版 Win/Mac】,是数字音乐制作领域中的一款知名软件。它为广大音乐制作人、声音工程师以及音乐爱好者提供了一个从音乐构思到最终作品发布的完整解决方案。这个版本特别为中文用户优化,并兼容W…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
