BaggingClassifier
写在前面
Ensemble methods 组合模型的方式大致为四个:/bagging / boosting / voting / stacking ,此文主要简单叙述 bagging算法。
算法主要特点
Bagging:
- 平行合奏:每个模型独立构建
- 旨在减少方差,而不是偏差
- 适用于高方差低偏差模型(复杂模型)
- 基于树的方法的示例是随机森林,其开发完全生长的树(注意,RF修改生长的过程以减少树之间的相关性)
接下来进入主题
Bagging 算法:
WIKI百科:
Bagging算法 (英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法。最初由Leo Breiman于1994年提出。Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。
实现原理:
数学基础
图例描述
实现描述
在scikit-learn中,
参数 max_samples 和 max_features 控制子集的大小(在样本和特征方面)
参数 bootstrap 和 bootstrap_features 控制是否在有或没有替换的情况下绘制样本和特征。- Bagging又叫自助聚集,是一种根据均匀概率分布从数据中重复抽样(有放回)的技术。
- 每个抽样生成的自助样本集上,训练一个基分类器;对训练过的分类器进行投票,将测试样本指派到得票最高的类中。
- 每个自助样本集都和原数据一样大
- 有放回抽样,一些样本可能在同一训练集中出现多次,一些可能被忽略。
实例分析:
实例环境
sklearn + anconda + jupyter
实例步骤
- 数据:可以采用 datasets 的数据,在此作者使用的是自己整理的股票行情
- 训练、测试数据归一化
- 参数寻优可以使用GridSearch,在此不作赘述
参数描述:
- 代码实现
import time
import pandas as pd
from pandas import Series,DataFrame
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.model_selection import cross_val_score
from sklearn import preprocessing
from sklearn import datasets
iris = datasets.load_iris()
X,y = iris.data[:,1:3],iris.target
start = time.clock() # 计时
min_max_scaler = preprocessing.MinMaxScaler()
# 读取训练数据 并数据规整化
raw_data = pd.read_csv('train_data.csv')
raw_datax = raw_data[:20000]
X1_scaled = min_max_scaler.fit_transform(raw_datax.ix[:,3:7])
y1 = raw_datax['Y1']
y1 = list(y1)
# 读取测试数据 并数据规整化
raw_datat = pd.read_csv('test_data.csv')
raw_datatx = raw_datat[:10000]
X1t_scaled = min_max_scaler.fit_transform(raw_datatx.ix[:,3:7])
y1t = raw_datatx['Y1']
y1t = list(y1t)
print len(X1_scaled)
print len(X1t_scaled)
end = time.clock()
print '运行时间:',end - start
clf = DecisionTreeClassifier().fit(X1_scaled,y1)
clfb = BaggingClassifier(base_estimator= DecisionTreeClassifier()
,max_samples=0.5,max_features=0.5).fit(X1_scaled,y1)
predict = clf.predict(X1t_scaled)
predictb = clfb.predict(X1t_scaled)
print clf.score(X1t_scaled,y1t)
print clfb.score(X1t_scaled,y1t)
# print Series(predict).value_counts()
# print Series(predictb).value_counts()
方法总结
- Bagging通过降低基分类器的方差,改善了泛化误差
- 其性能依赖于基分类器的稳定性;如果基分类器不稳定,bagging有助于降低训练数据的随机波动导致的误差;如果稳定,则集成分类器的误差主要由基分类器的偏倚引起
- 由于每个样本被选中的概率相同,因此bagging并不侧重于训练数据集中的任何特定实例
1.运用注意点
2.优化方向点
BaggingClassifier的更多相关文章
- sklearn 组合分类器
组合分类器: 组合分类器有4种方法: (1)通过处理训练数据集.如baging boosting (2)通过处理输入特征.如 Random forest (3)通过处理类标号.error_corre ...
- python中的几种集成分类器
from sklearn import ensemble 集成分类器(ensemble): 1.bagging(ensemble.bagging.BaggingClassifier) 对随机选取的子样 ...
- 【机器学习笔记之六】Bagging 简述
本文结构: 基本流程 有放回抽样的好处 Bagging 特点 sklearn 中 Bagging 使用 Bagging 和 Boosting 的区别 bagging:bootstrap aggrega ...
- XGBoost、LightGBM的详细对比介绍
sklearn集成方法 集成方法的目的是结合一些基于某些算法训练得到的基学习器来改进其泛化能力和鲁棒性(相对单个的基学习器而言)主流的两种做法分别是: bagging 基本思想 独立的训练一些基学习器 ...
- kaggle入门项目:Titanic存亡预测(四)模型拟合
原kaggle比赛地址:https://www.kaggle.com/c/titanic 原kernel地址:A Data Science Framework: To Achieve 99% Accu ...
- 第七章——集成学习和随机森林(Ensemble Learning and Random Forests)
俗话说,三个臭皮匠顶个诸葛亮.类似的,如果集成一系列分类器的预测结果,也将会得到由于单个预测期的预测结果.一组预测期称为一个集合(ensemble),因此这一技术被称为集成学习(Ensemble Le ...
- 壁虎书7 Ensemble Learning and Random Forests
if you aggregate the predictions of a group of predictors,you will often get better predictions than ...
- Notes : <Hands-on ML with Sklearn & TF> Chapter 7
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- Scikit-learn使用总结
在机器学习和数据挖掘的应用中,scikit-learn是一个功能强大的python包.在数据量不是过大的情况下,可以解决大部分问题.学习使用scikit-learn的过程中,我自己也在补充着机器学习和 ...
随机推荐
- Mac下多版本JDK安装及管理
在Java项目中,经常对JDK版本有不同的要求,可是不可能为了某个项目的运行重新下载不同版本JDK进行安装,这样就涉及到对本地环境中多个JDK版本的管理. Mac的JDK都是安装到一个指定目录的:/L ...
- Windows 如何录屏
从Windows10开始,Windows开始自带了录屏功能(XBOX附带的).本来是方便游戏录制,但日常的录制也不在话下. 快捷键:Win + G 打开XBOX的录制工具 在打开录制工具后 Win + ...
- DB2新建编目及删除编目
场景:在添加一个新数据库的连接时,需要先建立此数据库的编目信息 新建: 1.获取数据库IP.端口.数据库名称 2.打开DB2客户端的“DB2命令窗口” 3.按以下命令执行 db2 catalog tc ...
- c# 使用序列化
- 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!
利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow + qrcode 模块 核心代码import qrcode qr = ...
- LVS实现健康性检查功能
LVS高可用性 Director不可用,整个系统将不可用:SPoF Single Point of Failure 解决方案:高可用 keepalived heartbeat/corosync 某RS ...
- SpringBoot之多数据源动态切换数据源
原文:https://www.jianshu.com/p/cac4759b2684 实现 1.建库建表 首先,我们在本地新建三个数据库名分别为master,slave1,slave2,我们的目前就是写 ...
- markdown demo 学习
## <center>2019-05-08 12:05 DDoS攻击检测报告</center> ## - **MME ID**: 1123424 - **DDoS攻击类型**: ...
- Java中的经典算法之快速排序(Quick Sort)
Java中的经典算法之快速排序(Quick Sort) 快速排序的思想 基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对 ...
- git daemon 安装和使用
git daemon 安装和使用 系统:Cent OS 8 安装 git 和 git daemon(不同系统有不同的安装命令) yum install -y git yum install -y gi ...