python机器学习实战:Adaboost

本文介绍了AdaBoost算法的基本思想,通过不断调整样本权重和训练弱分类器来提高整体分类准确性。文章详细展示了如何用Python实现一个简单的AdaBoost分类器,并通过示例数据集验证了其效果,最终提高了分类准确率。
摘要由CSDN通过智能技术生成

1.AdaBoost算法:

  什么叫AdaBoost算法呢,我们可以这样理解:当我们做重要的决定的时候,我们一个人的意见有可能是错误的,但时如果我们能够吸取多个人的意见再做决定,那我们犯错误的几率就会大大的下降,没错,AdaBoost就是就是这样的算法,当我们只采用一个分类器来分类的时候,我们犯错的几率可能会是30%,但是如果我们采用多个分类器来分类,那我们的错误几率就有可能降低到10%,甚至5%以内。这就是AdaBoost强大的能力。

2.AdaBoost算法的实现:

  首先我们将会建立一个单层的决策树分类器,它是一个单节点的决策树。AdaBoost将建立在这个单层分类器上。

AdaBoost的运行过程如下:训练数据中的每个样本,并赋予一个权重,这些权重构成向量D。一开始,这些权重都初始化为相等的值。首先在训练数据上训练出一个弱分类器,并计算该分类器的准确率,然后在同一数据集上再次训练弱分类器。在分类器的第二次训练当中,将会重新调整每个样本的权值,其中第一次分对的样本权值将会下降,第一次分错的样本的权值将会增加。为了从所有弱分类器中得到最终的分类结果,AdaBoost为每个分类器都分配了一个权值alpha,这些alpha是基于每个弱分类器的错误率进行计算的:

                                  error=未分对的样本数/所有样本数目

              alpha的计算公式如下:

                             alpha=1/2  *  ln(1-error/error)

   容易发现当错误率error越大时,该分类器对应得权值alpha就越小,error越小,该分类器对应得权值就越大。

AdaBoost的工作原理如图:



首先我们需要创建一个单层决策数分类器:

from numpy import *
#单侧决策树分类器
def stumpClassify(dataMatrix,dimen,threshVal,threshIneq):
    """
    次函数的功能就是:将dataMatrix的第dimen个维度的数据与threshVal进行比较,对dataMatrix进行分类,
    将大于threshVal的分成一类,
    将小于threshVal的 分成另外一类。
    :param dataMatrix: 数据集
    :param dimen:     分类依据的维度
    :param thres
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值