1. 概述

Bagging也叫做bootstrap aggregating,是在原始数据集选择S次后得到S个新数据集的一种技术。是一种有放回抽样。如图:

2. 示例

3. 算法流程


       Bagging是投票式算法,如图所示:首先使用Bootstrap产生k不同的训练数据集,然后再分别基于这些训练数据集得到多个基础分类器,最后通过对基础分类器的分类结果进行组合得到一个相对更优的预测模型。

4. 代码实现

# 导入算法包以及数据集
from sklearn import neighbors
from sklearn import datasets
from sklearn.ensemble import BaggingClassifier
from sklearn import tree
from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt## 载入数据集:iris数据集
iris = datasets.load_iris()
x_data = iris.data[:,:2]
y_data = iris.targetx_train,x_test,y_train,y_test = train_test_split(x_data, y_data)
## KNN模型
knn = neighbors.KNeighborsClassifier()
knn.fit(x_train, y_train)def plot(model):# 获取数据值所在的范围x_min, x_max = x_data[:, 0].min() - 1, x_data[:, 0].max() + 1y_min, y_max = x_data[:, 1].min() - 1, x_data[:, 1].max() + 1# 生成网格矩阵xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),np.arange(y_min, y_max, 0.02))z = model.predict(np.c_[xx.ravel(), yy.ravel()])# ravel与flatten类似,多维数据转一维。flatten不会改变原始数据,ravel会改变原始数据z = z.reshape(xx.shape)# 等高线图cs = plt.contourf(xx, yy, z)# 画图
plot(knn)
# 样本散点图
plt.scatter(x_data[:, 0], x_data[:, 1], c=y_data)
plt.show()
# 准确率
knn.score(x_test, y_test)

输出:

## 决策树模型
dtree = tree.DecisionTreeClassifier()
dtree.fit(x_train, y_train)# 画图
plot(dtree)
# 样本散点图
plt.scatter(x_data[:, 0], x_data[:, 1], c=y_data)
plt.show()
# 准确率
dtree.score(x_test, y_test)

输出:

## Bagging KNN
bagging_knn = BaggingClassifier(knn, n_estimators=100)
# 输入数据建立模型
bagging_knn.fit(x_train, y_train)
plot(bagging_knn)
# 样本散点图
plt.scatter(x_data[:, 0], x_data[:, 1], c=y_data)
plt.show()
bagging_knn.score(x_test, y_test)

输出:

## Bagging 决策树
bagging_tree = BaggingClassifier(dtree, n_estimators=100)
# 输入数据建立模型
bagging_tree.fit(x_train, y_train)
plot(bagging_tree)
# 样本散点图
plt.scatter(x_data[:, 0], x_data[:, 1], c=y_data)
plt.show()
bagging_tree.score(x_test, y_test)

输出:

【机器学习】集成学习--Bagging相关推荐

  1. 机器学习 - [集成学习]Bagging算法的编程实现

    机器学习 - [集成学习] Bagging算法的编程实现 李俊才 的 CSDN 博客:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 ...

  2. 机器学习--集成学习--Bagging,Boosting,Stacking

    在一些数据挖掘竞赛中,后期我们需要对多个模型进行融合以提高效果时,常常会用到Bagging,Boosting,Stacking等这几个框架算法.下面就来分别详细讲述这三个框架算法.这里我们只做原理上的 ...

  3. 机器学习 集成学习篇——python实现Bagging和AdaBOOST算法

    机器学习 集成学习篇--python实现Bagging和AdaBOOST算法 摘要 Bagging算法 Adaboost算法 摘要 本文通过python实现了集成学习中的Bagging和AdaBOOS ...

  4. 集成学习——Bagging、Boosting、Stacking

    目录 偏差与方差 投票法 集成学习 Bagging Bootstraps Bagging Boosting 基本概念 Adaboost 前向分步算法 梯度提升树(GBDT) XGBoost Light ...

  5. R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比

    R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...

  6. 集成学习——BAGGING和随机森林

    集成学习--BAGGING和随机森林 集成学习--BAGGING和随机森林 1.什么是集成学习 2.怎样进行集成学习 3.Bagging方法 4.Bagging方法训练.预测过程 5.Bagging方 ...

  7. 集成学习-Bagging和Boosting算法

    文章目录 集成学习 Bagging 随机森林 Bosting Adaboost GBDT XGBoost 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网 ...

  8. 树模型系列之集成学习(Bagging、Boosting、Stacking)

    文章目录 树模型系列之集成学习(Bagging.Boosting.Stacking) bagging Boosting Stacking 偏差与方差 集成学习的偏差与方差 Bagging 的偏差与方差 ...

  9. 机器学习入门(五):集成学习Bagging,Boosting,RandomForest和GridSearchCV参数调优

    0)集成学习 集成学习(ensemble methods)的目的是结合不同的分类器,生成一个meta-classifier, 从而使其拥有比单个classifier有更好的泛化能力(The goal ...

  10. 机器学习集成学习-BOOSTING与BAGGING

    集成算法(Emseble Learning) 是构建多个学习器,然后通过一定策略结合把它们来完成学习任务的,常常可以获得比单一学习显著优越的学习器. 用于减少方差的bagging 用于减少偏差的boo ...

最新文章

  1. 讨论丨深度学习已经成为过去?迁移学习才是真正的未来?
  2. c语言数组算n阶乘,c语言中如何计算n的阶乘
  3. MyBatis的高级映射之多对一
  4. ASP.NET Core 之 Identity 入门(三)
  5. jsp javabean mysql_jsp mysql JavaBean
  6. java第四章编程题(初学篇)
  7. 关于应用的外部接口设计心得
  8. 【Matlab学习笔记】【图像滤波去噪】以-4,-8为中心的拉普拉斯滤波器
  9. 先来先服务、高优先权、按时间片轮转调度算法(含清晰流程图)
  10. javascript/js计算器的基础制作
  11. 饥荒dns服务器未响应,DNS服务器未响应怎么办
  12. [Codeforces1148C]Crazy Diamond——构造
  13. 如何找到最新的RFC文档
  14. 《学习如何学习》week3 3.1 Interview with Nelson Dellis
  15. BS模型和CS模型的介绍和区别
  16. 白天黑夜、中午和傍晚的固定配色绘画技巧
  17. vue2的动画,混入Mixin,插件,指令,渲染函数,响应式,MVVM
  18. WAF应用防火墙的功能
  19. 安卓进阶开发资料之分享
  20. golang路由mux的介绍及基本使用

热门文章

  1. VSCODE打开野火电机代码需要增加的配置 c_cpp_properties.json
  2. Linux+varnish安装配置
  3. hive對於數據是懶加載的_hive 安装 文档
  4. mysql 批量数据导入报错_Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA
  5. 计算机网络--从五层模型开始(完善中)
  6. HTML5 canvas游戏工作原理
  7. html5--3.1 form元素
  8. 转:【微信小程序】实现锚点定位楼层跳跃的实例
  9. 【转】Mac系统中安装homebrew(类似redhat|Centos中的yum;类似Ubuntu中的apt-get)
  10. c++11 随机数random