from sklearn import ensemble

集成分类器(ensemble):

1.bagging(ensemble.bagging.BaggingClassifier)

  其原理是从现有数据中有放回抽取若干个样本构建分类器,重复若干次建立若干个分类器进行投票,通过投票决定最终的分类结构

2.RandomForest(ensemble.RandomForestClassifier)

对随机选取的子样本集分别建立m个CART(Classifier and Regression Tree),然后投票决定最终的分类结果

Random在此处的意义:

1)Bootstrap 中的随机选择子样本集

2)Random subspace 的算法从属性中随机选择k个属性,每个树节点分裂时从这随机的k个属性中,选择最优的

3.Boosting(ensemble.weight_boosting)

在选择分类超平面时给样本加了一个权值,使得loss function尽量考虑那些分错类的样本。(i.e.分错类的样本weight 大)

-boosting 重采样的不是样本,而是样本的分布。

  最后的分类结果是几个弱分类器的线性加权和。注意这几个弱分类器都是一种base classifier类别。

-与bagging的区别:1)bagging 的训练集是随机的,各训练集是独立的;而boosting训练集的选择不是独立的,每次选择的训练集都依赖于上一次学习的结果;

2) bagging的每个预测函数(即弱假设)没有权重,而Boosting根据每一次训练的训练误差得到该次预测函数的权重;

          3)bagging的每个分类器的训练样本是随机抽样构建,而Boosting会对上一次分类输出的结果进行采样,错误的样本会有更高的权重;

4)bagging的各个预测函数可以并行生成,而boosting的只能顺序生成。对于神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量的时间开销。

  2)、3)的权重机制,体现了boosting“提升”的特性。

-与bagging的共同点:都可以通过使用for循环给estimator赋不同的分类器类型,以实现集成多种分类器,而不是单一的某一种(比如决策树)。

代表算法 Adaboost 和 Realboost。总的来说,Adaboost 简单好用,Realboost 准确

4、GBDT

  使用决策树作为基本分类器;梯度提升优化算法;

  重复选择一个表现一般的模型并且每次基于先前模型的表现进行调整;

  不同的是,AdaBoost是通过提升错分数据点的权重来定位模型的不足,而GradientBoosting是通过计算梯度(gradient)来定位模型的不足。因此相比AdaBoost,GradientBoosting可以使用更多种类的目标函数。

5.Stacking

在stacking(堆叠)方法中,每个单独分类器的输出会作为更高层分类器的输入,更高层分类器可以判断如何更好地合并这些来自低层的输出。

参考文章:http://blog.csdn.net/abcjennifer/article/details/8164315

python中的几种集成分类器的更多相关文章

  1. Python中的三种数据结构

    Python中,有3种内建的数据结构:列表.元组和字典.1.列表     list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.列表中的项目.列表中的项目应该包括在方括号中,这 ...

  2. python中的三种输入方式

    python中的三种输入方式 python2.X python2.x中以下三个函数都支持: raw_input() input() sys.stdin.readline() raw_input( )将 ...

  3. Python 中的几种矩阵乘法 np.dot, np.multiply, *【转】

    本文转载自:https://blog.csdn.net/u012609509/article/details/70230204 Python中的几种矩阵乘法1. 同线性代数中矩阵乘法的定义: np.d ...

  4. 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...

  5. Python中的几种数据类型

    大体上把Python中的数据类型分为如下几类:   Number(数字) 包括int,long,float,complex String(字符串) 例如:hello,"hello" ...

  6. Python中的两种结构dict和set

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 假设要根据同学的名字查找对应的成绩 如果 ...

  7. Python中的7种可调用对象

    Python中有七种可调用对象,可调用对象可使用内置函数callable来检测 一.用户自定义的函数: 使用def语句或者lambda表达式创建的函数. 二.内置函数: 使用C语言实现的函数,如len ...

  8. Python中的几种矩阵乘法(转)

    一.  np.dot() 1.同线性代数中矩阵乘法的定义.np.dot(A, B)表示: 对二维矩阵,计算真正意义上的矩阵乘积. 对于一维矩阵,计算两者的内积. 2.代码 [code] import ...

  9. Python中的两种路径

    Java中有两种路径,一种是操作系统的路径path,另一种是类路径classpath. Python中也是如此,一种是操作系统环境变量中的path,另一种是PYTHONPATH. 当import xx ...

随机推荐

  1. 【转】如何使用Unity创造动态的2D水体效果

    原文:http://gamerboom.com/archives/83080 作者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染 ...

  2. 低压差稳压器AMS1585

    (1)高效线性稳压. (2)输出高达4.6A,最高输入电压15V,推荐最低压差1.5V(最低1.35V),最大压差12V. (3)两种封装:TO220(直插式),TO230(贴片). 典型电路如下图所 ...

  3. c语言运算符号详细说明

    C语言中具有右结合性的运算符包括所有单目运算符以及赋值运算符(=)和条件运算符.其它都是左结合性. 判断表达式计算顺序时,先按优先级高的先计算,优先级低的后计算,当优先级相同时再按结合性,或从左至右顺 ...

  4. IOS引用的静态库里包含category文件出现“unrecognized selector”的解决办法

    来自链接:http://blog.csdn.net/ccf0703/article/details/8279187 针对静态库工程中的Category,在被其他工程引入的时候,会出现selector ...

  5. SWMM[Storm Water Management Model]模型代码编译调试环境设置

    1. 下载计算引擎源代码后解压, 目前最新版本5-0-022. 其中包含源文件和工程文件,选择vc2005_con.在源代码目录下创建VC2005_CON目录拷贝VC2005-CON.VCPROJ 放 ...

  6. Java编程-第一个Java程序

    Java编程用到的IDE是Eclipse. 关于第一个Java程序实现的简单流程: (1)    下载eclipse (2)    File-New-Java Project 命名工程名字:Hello ...

  7. sBPM产品介绍

    作者:CppExplore   http://www.cppblog.com/CppExplore/和 http://blog.csdn.net/cppexplore同步发布. 近3年没发文章,谨以本 ...

  8. Windows宿主机访问Ubuntu中mysql数据库笔记

    1.网络 既然要远程ubuntu的系统.那么首先是两个网络是不是在一个网段.能不能ping的通? a)  Windows电脑上--cmd 打开命令窗口.键入:ipconfig 命令.查看主机IP. b ...

  9. c++重点知识点

    - const加强 在变量前加const,说明变量是常量只读属性.假如用指针去修改const常量会用什么结果.上例子: //a 是一个只读的常量,按照理论应该不能被修改 ;//内存中为a分配地址,赋值 ...

  10. [RxJS] Combination operators: concat, startWith

    Some Observables may complete, and we may want to append another Observable to the one which just co ...