模式识别与机器学习(十一):Bagging

1.原理

Bagging [Breiman, 1996a] 是井行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m 个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现,初始训练集中约有63.2%的样本出现在来样集中。

照这样,我们可采样出T 个含m 个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合.这就是Bagging 的基本流程.在对预测输出进行结合时, Bagging 通常对分类任务使用简单投票法,对回归任务使用简单平均法.若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。其步骤如下:

1.对于给定的训练样本S,每轮从训练样本S中采用有放回抽样(Booststraping)的方式抽取M个训练样本,共进行n轮,得到了n个样本集合,需要注意的是这里的n个训练集之间是相互独立的。

2.在获取了样本集合之后,每次使用一个样本集合得到一个预测模型,对于n个样本集合来说,我们总共可以得到n个预测模型。

3.如果我们需要解决的是分类问题,那么我们可以对前面得到的n个模型采用投票的方式得到分类的结果,对于回归问题来说,我们可以采用计算模型均值的方法来作为最终预测的结果。
在这里插入图片描述

2.代码

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建决策树分类器
base_estimator = DecisionTreeClassifier()

# 创建Bagging分类器
clf = BaggingClassifier(base_estimator=base_estimator, n_estimators=100, random_state=42)

# 训练模型
clf.fit(X_train, y_train)

# 预测测试集
y_pred = clf.predict(X_test)

# 打印预测结果
print(y_pred)

我们使用了鸢尾花数据集,这是一个常用的多类别分类数据集。我们首先加载数据,然后划分为训练集和测试集。然后,我们创建一个决策树分类器作为基学习器,并创建一个Bagging分类器,使用训练集对其进行训练。最后,我们使用训练好的模型对测试集进行预测,并打印出预测结果。

BaggingClassifier的参数base_estimator表示基学习器,n_estimators表示基学习器的数量,这些参数都可以根据需要进行调整。

相关推荐

  1. 模式识别机器学习):梯度提升树

    2023-12-24 15:30:04       55 阅读
  2. 模式识别机器学习(九):Adaboost

    2023-12-24 15:30:04       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-24 15:30:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-24 15:30:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-24 15:30:04       82 阅读
  4. Python语言-面向对象

    2023-12-24 15:30:04       91 阅读

热门阅读

  1. R语言使用scitb包10分钟快速绘制论文基线表

    2023-12-24 15:30:04       72 阅读
  2. linux 文件概念

    2023-12-24 15:30:04       40 阅读
  3. 面积最大的蛋糕

    2023-12-24 15:30:04       57 阅读
  4. 软件工程-第二章 计算机系统工程

    2023-12-24 15:30:04       53 阅读
  5. 【Python爬虫】第四课 动态爬取数据

    2023-12-24 15:30:04       55 阅读
  6. 排序算法——基数排序

    2023-12-24 15:30:04       61 阅读
  7. C++学习——STL

    2023-12-24 15:30:04       62 阅读
  8. 60 贪心算法解优势洗牌-田忌赛马问题

    2023-12-24 15:30:04       60 阅读
  9. 8.架构设计系列:常用设计模式的实践

    2023-12-24 15:30:04       51 阅读
  10. Python 常用模块re

    2023-12-24 15:30:04       56 阅读
  11. k8s中的namespace及创建方式

    2023-12-24 15:30:04       57 阅读