更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/

scikit-learn库之AdaBoost算法

当我们对Adaboost调参时,主要要对两部分内容调参,第一部分是对Adaboost的框架进行调参,第二部分是对弱学习器调参。本文主要介绍AdaBoost的两个模型AdaBoostClassifierAdaBoostRegressor,会详解介绍AdaBoostClassifier模型,然后会对比着讲解AdaBoostRegressor模型。

接下来将会讨论上述两者的区别,由于是从官方文档翻译而来,翻译会略有偏颇,有兴趣的也可以去scikit-learn官方文档查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.ensemble

一、AdaBoostClassifier

1.1 使用场景

AdaBoostClassifier模型主要解决分类问题,并且它在scikit-learn库中使用了两种分类算法的实现,分别是SAMME和SAMME.R。

1.2 参数

  • base_estimator:弱分类器类型,object类型。理论上可以选择任何一个弱分类器,不过需要支持样本权重,一般用决策树或神经网络。如果algorithm='SAMME.R',弱分类器应该支持概率预测,即支持predict_proba()方法。如果为默认值,算法会选择一个最大深度为1的决策树。默认为None。
  • n_estimators:最大迭代次数,int类型。弱学习器的最大迭代次数,如果迭代次数太小,容易欠拟合;如果迭代次数太大,容易过拟合。默认为50。
  • learning_rate:权重缩减系数,float类型。这个参数是正则化项的参数\(\lambda\)。较小的\(\lambda\)需要更多的迭代次数,即learning_rate和n_estimators需要一起调参。默认为1。
  • algorithm:算法类型,str类型。该参数主要用来度量学习器的权重。默认为'SAMME.R'。
    • 'SAMME':使用样本集分类效果作为弱分类器权重
    • 'SAMME.R':使用样本集分类的预测概率大小作为弱分类器权重
  • random_state:随机数种子,int类型。使用后可以保证随机数不会随着时间的变化而变化。默认为None。

1.3 属性

  • estimators_:list类型。弱学习集合。
  • classes_:array类型。类别列表。
  • n_classes_:int类型。类别数。
  • estimator_weights_:array类型。每个弱学习的权重。
  • estimator_errors_:array类型。每个弱学习额分类误差。
  • feature_importances_:array类型。返回特征重要度。

1.4 方法

  • decision_function(X):计算样本X的决策函数值。
  • fit(X,y):把数据放入模型中训练模型。
  • get_params([deep]):返回模型的参数,可以用于Pipeline中。
  • predict(X):预测样本X的分类类别。
  • predict_log_proba(X):返回样本X在各个类别上对应的对数概率。
  • predict_proba(X):返回样本X在各个类别上对应的概率。
  • score(X,y[,sample_weight]):基于报告决定系数\(R^2\)评估模型。
  • set_prams(**params):创建模型参数。
  • staged_decision_function(X):返回每个阶段样本X的决策函数值。
  • staged_predict(X):返回每个阶段样本X的预测值。
  • staged_predict_proba(X):返回每个阶段样本X在各个类别上对应的概率。
  • staged_score(X,y[,sample_weight]):返回每个阶段样本X的\(R^2\)分数。

二、AdaBoostRegressor

AdaBoostRegressor模型和AdaBoostClassfier模型参数上差不多,只是前者一般用来解决回归问题,后者用来解决分类问题,预测值处理方式不同。并且AdaBoostRegressor模型在scikit-learn库中只是用了Adaboost.R2算法实现。

AdaBoostRegressor模型没有参数'algorithm',而是使用了loss参数,即误差函数{'linear','square','exponential'}的选择。

04-03 scikit-learn库之AdaBoost算法的更多相关文章

  1. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  2. Scikit Learn: 在python中机器学习

    转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...

  3. SIGAI机器学习第二十二集 AdaBoost算法3

    讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用. AdaB ...

  4. AdaBoost 算法-分析波士顿房价数据集

    公号:码农充电站pro 主页:https://codeshellme.github.io 在机器学习算法中,有一种算法叫做集成算法,AdaBoost 算法是集成算法的一种.我们先来看下什么是集成算法. ...

  5. 集成学习之Adaboost算法原理小结

    在集成学习原理小结中,我们讲到了集成学习按照个体学习器之间是否存在依赖关系可以分为两类,第一个是个体学习器之间存在强依赖关系,另一类是个体学习器之间不存在强依赖关系.前者的代表算法就是是boostin ...

  6. Adaboost 算法

    一 Boosting 算法的起源 boost 算法系列的起源来自于PAC Learnability(PAC 可学习性).这套理论主要研究的是什么时候一个问题是可被学习的,当然也会探讨针对可学习的问题的 ...

  7. Adaboost 算法的原理与推导

    0 引言 一直想写Adaboost来着,但迟迟未能动笔.其算法思想虽然简单“听取多人意见,最后综合决策”,但一般书上对其算法的流程描述实在是过于晦涩.昨日11月1日下午,邹博在我组织的机器学习班第8次 ...

  8. 一个关于AdaBoost算法的简单证明

    下载本文PDF格式(Academia.edu) 本文给出了机器学习中AdaBoost算法的一个简单初等证明,需要使用的数学工具为微积分-1. Adaboost is a powerful algori ...

  9. Adaboost算法初识

    1.算法思想很简单: AdaBoost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器,即弱分类器,然后把这些弱分类器集合起来,构造一个更强的最终分类器.(三个臭皮匠,顶个诸葛亮) 它的 ...

随机推荐

  1. Vue使用MathJax动态识别数学公式

    本人菜鸟一名,如有错误,还请见谅. 1.前言 最近公司的一个项目需求是在前端显示Latex转化的数学公式,经过不断的百度和测试已基本实现.现在此做一个记录. 2.MathJax介绍 MathJax是一 ...

  2. 【Offer】[51] 【数组中的逆序对】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数.例如,在数组 ...

  3. 3.1、双向循环链表(java实现)

    1.创建节点类 public class CNode<T> { public CNode prev; public CNode next; public T data; public CN ...

  4. <%@ include %>导入的文件乱码

    如: <% String ss = (String) session.getAttribute("username"); if (ss == null || ss == &q ...

  5. VMware Ubuntu 19最新安装详细过程

    ubuntu可以说是目前最流行的Linux改造版了(如果安卓不算的话),现在的很多服务器都是linux系统的,而自己属于那种前端也搞,后台也搞,对框架搭建也感兴趣,但是很多生产上的框架和工具都是安装在 ...

  6. 无法解析的外部符号,该符号在xxx函数中被引用

    无法解析的外部符号.........,该符号在函数.........被引用 在我们敲代码的过程中,我们偶尔会遇到这个问题,这个问题大多数都是因为你自己的程序有问题,而不是缺少相应的库文件.话不多说,直 ...

  7. 关于W3Cschool定义的设计模式-常用的9种设计模式的介绍

    一.设计模式 tip:每种设计模式,其实都是为了更高效的,更方便的解决在面对对象编程中所遇到的问题. 什么是设计模式:     是一套经过反复使用.多人知晓的.经过分类的.代码设计经验的总结   为什 ...

  8. uboot学习之BL3的流程

    BL2的最后通过汇编调用了board_init_r函数,此时进入BL3的阶段,此时的主要工作: 这一阶段涉及的文件及任务如下 arch/arm/lib/board.c           1. boa ...

  9. html中的空格

    网上摘录: HTML提供了6种空格实体.除第一种外,其他几种空格在不同浏览器中宽度各异.               它叫不换行空格,全称No-Break Space,它是最常见和我们使用最多的空格, ...

  10. selenium-05-常见问题

    一:日期控件 selenium不能直接对日期控件操作,可以通过js对日期控件做赋值操作 WebElement inputTimeBox=driver.findElement(by.name(" ...