机器学习:集成学习概念、分类、随机森林 - 实践

news/2025/10/7 20:47:57/文章来源:https://www.cnblogs.com/tlnshuju/p/19128869

机器学习:集成学习概念、分类、随机森林 - 实践

2025-10-07 20:45  tlnshuju  阅读(0)  评论(0)    收藏  举报

一、集成学习概念

“集思广益”,通过多样性(Diversity)和集体决策降低方差(Variance)或偏差(Bias),从而提高泛化能力。就是集成学习是一种通过结合多个基学习器(弱学习器)的预测结果来提升模型整体性能的机器学习方法。其核心思想

核心思想:

弱学习器:指性能略优于随机猜测的方便模型(如决策树桩、线性模型);

强学习器:依据组合多个弱学习器构建的高性能模型;

核心目标:减少过拟合(降低方差)或欠拟合(降低偏差)。

传统机器学习算法(例如:决策树,逻辑回归等) 的目标都是寻找一个最优分类器尽可能的将训练数据分开。集成学习 (Ensemble Learning) 算法的基本思想就是将多个分类器组合,从而搭建一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话:三个臭皮匠,赛过诸葛亮。
在这里插入图片描述

二、集成学习分类

集成学习算法一般分为:bagging和boosting
在这里插入图片描述

(一)Bagging集成

Bagging 框架凭借有放回的抽样产生不同的训练集,从而训练具有差异性的弱学习器,之后借助平权投票、多数表决的方式决定预测结果。
在这里插入图片描述

(二)Boosting集成

Boosting 体现了提升思想,每一个训练器重点关注前一个训练器不足的地方进行训练,通过加权投票的方式,得出预测结果。
在这里插入图片描述
Boosting是一组可将弱学习器升为强学习器算法,这类算法的工作机制类似:

1.先从初始训练集训练出一个基学习器;

2.在根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本(增加权重)在后续得到最大的关注;

3.然后基于调整后的样本分布来训练下一个基学习器;

4.如此重复进行,直至基学习器数目达到实现指定的值T为止。

5.再将这T个基学习器进行加权结合得到集成学习器。

简而言之:每新加入一个弱学习器,整体能力就会得到提升
在这里插入图片描述

(三)两种集成方法对比

在这里插入图片描述

三、随机森林

随机森林是基于 Bagging 思想实现的一种集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高模型的准确性和鲁棒性。它由Leo Breiman在2001年提出,广泛应用于分类和回归任务。

其构造过程是:

  1. 训练:
    (1)有放回的产生训练样本;
    (2)随机挑选 n 个特征(n 小于总特征数量)。
  2. 预测:
    (1)分类任务:投票(多数表决);
    (2)回归任务:平均预测值。

优点与缺点:
在这里插入图片描述
实例:

#1.数据导入
#1.1导入数据
import pandas as pd
#1.2.利用pandas的read.csv模块从互联网中收集泰坦尼克号数据集
titanic=pd.read_csv("data/泰坦尼克号.csv")
titanic.info() #查看信息
#2人工选择特征pclass,age,sex
X=titanic[['Pclass','Age','Sex']]
y=titanic['Survived']
#3.特征工程
#数据的填补
X['Age'].fillna(X['Age'].mean(),inplace=True)
X = pd.get_dummies(X)
#数据的切分
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test =train_test_split(X,y,test_size=0.25,random_state=22)
#4.使用单一的决策树进行模型的训练及预测分析
from sklearn.tree import DecisionTreeClassifier
dtc=DecisionTreeClassifier()
dtc.fit(X_train,y_train)
dtc_y_pred=dtc.predict(X_test)
dtc.score(X_test,y_test)
#5.随机森林进行模型的训练和预测分析
from sklearn.ensemble import RandomForestClassifier
rfc=RandomForestClassifier(max_depth=6,random_state=9)
rfc.fit(X_train,y_train)
rfc_y_pred=rfc.predict(X_test)
rfc.score(X_test,y_test)
#6.性能评估
from sklearn.metrics import classification_report
print("dtc_report:",classification_report(dtc_y_pred,y_test))
print("rfc_report:",classification_report(rfc_y_pred,y_test))
# 随机森林做预测
# 1 实例化随机森林
rf = RandomForestClassifier()
# 2 定义超参数的选择列表
param={"n_estimators":[80,100,200], "max_depth": [2,4,6,8,10,12],"random_state":[9]}
# 超参数调优
# 3 使用GridSearchCV进行网格搜索
from sklearn.model_selection import GridSearchCV
gc = GridSearchCV(rf, param_grid=param, cv=2)
gc.fit(X_train, y_train)
print("随机森林预测的准确率为:", gc.score(X_test, y_test))

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

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

相关文章

sudo docker exec -it backend bash 以交互方式(interactive)进入正在运行的 Docker 容器的命令行环境 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

解码查找算法与哈希表

查找基础概念 查找的定义 查找(又称搜索)是从一组数据中,找出 “关键字与目标值匹配” 的记录的操作;若找到则返回记录的位置(如数组下标),若未找到则返回 “不存在” 标识(如-1)。 查找效率的影响因素数据存…

完整教程:MySQL 如何判断某个表中是否存在某个字段

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025/10/7

2025/10/7休息一天

NVMe IP现状扫盲 - 指南

NVMe IP现状扫盲 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

山西正规网站建设推广如何分析网站流量

项目介绍 ChatTTS是一款专为优化对话场景而生的语音生成模型,尤其匹配大型语言模型(LLM)的交互需求,以及生成对话式音频、视频旁白等应用场景,无缝覆盖中英文双语。 通过汲取约100,000小时的高质量中英语音数据进行深…

字体设计教程网站好变装chinacd wordpress

泛型&#xff08;宽泛的&#xff0c;不确定的类型&#xff09; 使用场景&#xff1a;定义一个函数或类时&#xff0c;无法确定要使用的具体类型&#xff08;返回值、参数、属性的类型不能确定&#xff09;泛型使用时相当于一个参数 functiondemo<T>(arg: T): T{return …

第二次课动手动脑合集

文档: https://files.cnblogs.com/files/blogs/847696/动手动脑2.zip?t=1759839965&download=true 1.生成随机数 import java.util.Arrays; public class RandomGenerator { public static void main(String[] a…

网站时间轴品牌策划经典案例

示意图的特点 示意图表示的是大体上描述或表示物体的形状、相对大小、物体与物体之间的联系(关系),描述某器材或某机械的大体结构和工作的基本原理,描述某个工艺过程简单图示都叫做示意图。 示意图的特点就是简单明了,它突出了重点,忽略很多次要的细节。老师上课时在黑板…

课后实验2

public class MethodOverload { public static void main(String[] args) { System.out.println("The square of integer 7 is " + square(7)); System.out.println("\nThe square of double 7.5 is &q…

网站qq在线代码公主岭网站建设

非常高兴有机会向大家介绍CleanMyMac X 2024这款专业的Mac清理软件。它以其强大的清理能力、系统优化效果、出色的用户体验以及高度的安全性&#xff0c;在Mac清理软件市场中独树一帜。 CleanMyMac X2024全新版下载如下: https://wm.makeding.com/iclk/?zoneid49983 一、主要…

centos8的防火墙管理

开放一个tcp端口 firewall-cmd --zone=public --add-port=83/tcp --permanent 查看防火墙的状态 systemctl start firewalld.service

UCB-CS70_离散数学_个人笔记:Proofs 和 EECS 的联系及几种常见证明方法 - Zeeh

Proofs are very powerful and are in some ways like computer programs. Indeed, there is a deep historic link between these two concepts that we will touch upon in this course — the invention of compute…

提升学历哪种方式含金量高网站外链优化

用护眼灯还需要开灯吗&#xff1f;在使用护眼台灯时&#xff0c;同时开启室内的主照明十分必要。如果关闭其他灯具&#xff0c;仅保留护眼台灯&#xff0c;那么只有台灯周围的小片区域能够被照亮&#xff0c;而房间的其他部分则处于相对昏暗的状态。这种明显的光线差异会造成视…

如何生成和制作PDF文件 - 实践

如何生成和制作PDF文件 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

网站的建设与维护实践报告创客网站建设

Postgresql的事务里面ddl可以回滚,这点和oracle不太一样。其中postgresql alter table事务操作中&#xff0c;包括回滚的整个过程中表对象的relfilenode不变&#xff0c;但是postgresql truncate事务操作中&#xff0c;一旦执行truncate操作表对象的relfilenode在当前会话就变了…

【使用JAVA调用deepseek】构建自能回复

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

1.2 马尔可夫决策过程(Markov Decision Process, MDP)

定义 强化学习(Reinforcement Learning, RL)方法适用于智能体(agent)以离散时间步与环境交互的问题(@fig-agentenv)。 在时间 \(t\),智能体处于状态 \(s_t\),并决定执行一个动作 \(a_t\)。在下一时刻,它进入新…

博弈论dp复习笔记

Stones 题目概述 集合 \(A\),小 \(X\) 和小 \(Y\) 选择其中一个数 \(x\),然后将石堆拿走 \(x\) 个,谁不能操作谁输,一开始石堆石头数量为 \(k\). 数据范围:\(1\leq k\leq 10^5,1\leq n\leq 100,1\leq a_i\leq 10^…

10.7阅读笔记

正当我对着空白的IDE发愁“该如何开始”时,这本书的《曳光弹开发》这一章给了我明确的方向。 ​​1. 曳光弹 vs. 原型—— 两种启动策略​​ 这是我第一次接触这两个概念,它们解决的是不同的问题。 ​​原型:用于探…