资讯专栏INFORMATION COLUMN

Adaboost的python实现

young.li / 1021人阅读

摘要:即某个数据被分为哪一类要由各分类器权值决定。实现参考西瓜书及机器学习实战实现初始化权重,每个都一样唯一的入参是迭代次数,要么为跳出循环,要么循环次数达到的时候跳出循环决策树桩算法,也可以换成其他的算法计算值重新计算权重

1.介绍
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)

2.算法逻辑
1、先通过对N个训练样本的学习得到第一个弱分类器; 2、将分错的样本和其他的新数据一起构成一个新的N个的训练样本,通过对这个样本的学习得到第二个弱分类器; 3、将1和2都分错了的样本加上其他的新样本构成另一个新的N个的训练样本,通过对这个样本的学习得到第三个弱分类器 4、最终经过提升的强分类器。即某个数据被分为哪一类要由各分类器权值决定。

3.实现(参考西瓜书及机器学习实战)

#adaBoost实现
def adaBoostTrain(dataArr,classLabels,numIt=40):
    weakClassArr = []
    m = np.shape(dataArr)[0]
    D = np.mat(np.ones((m,1))/m)   #初始化权重,每个feature都一样
    aggClassEst = np.mat(np.zeros((m,1)))
    #唯一的入参是迭代次数,要么error为 0跳出循环 ,要么循环次数达到numIt 的时候跳出循环
    for i in range(numIt):
        # 决策树桩算法,也可以换成其他的算法
        bestStump,error,classEst = buildStump(dataArr,classLabels,D)
        #print "D:",D.T
        alpha = float(0.5*np.log((1.0-error)/max(error,1e-16)))#计算alpha值
        bestStump["alpha"] = alpha  
        weakClassArr.append(bestStump)
        #print "classEst: ",classEst.T
        #重新计算权重
        expon = np.multiply(-1*alpha*np.mat(classLabels).T,classEst)
        D = np.multiply(D,np.exp(expon))
        D = D/D.sum()
        aggClassEst += alpha*classEst
        aggErrors = np.multiply(np.sign(aggClassEst) != np.mat(classLabels).T,np.ones((m,1)))
        errorRate = aggErrors.sum()/m
        print "total error: ",errorRate
        if errorRate == 0.0: break
        print "weakClassArr:",weakClassArr
        print "aggClassEst:", aggClassEst

    return weakClassArr,aggClassEst

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19775.html

相关文章

  • 【数据科学系统学习】机器学习算法 # 西瓜书学习记录 [12] 集成学习实践

    摘要:本篇内容为机器学习实战第章利用元算法提高分类性能程序清单。将当前错误率与已有的最小错误率进行对比后,如果当前的值较小,那么就在字典中保存该单层决策树。上述,我们已经构建了单层决策树,得到了弱学习器。 本篇内容为《机器学习实战》第 7 章利用 AdaBoost 元算法提高分类性能程序清单。所用代码为 python3。 AdaBoost优点:泛化错误率低,易编码,可以应用在大部分分类器上...

    terro 评论0 收藏0
  • Python数据挖掘与机器学习技术入门实战

    摘要:在本次课程中,着重讲解的是传统的机器学习技术及各种算法。回归对连续型数据进行预测趋势预测等除了分类之外,数据挖掘技术和机器学习技术还有一个非常经典的场景回归。 摘要: 什么是数据挖掘?什么是机器学习?又如何进行Python数据预处理?本文将带领大家一同了解数据挖掘和机器学习技术,通过淘宝商品案例进行数据预处理实战,通过鸢尾花案例介绍各种分类算法。 课程主讲简介:韦玮,企业家,资深IT领...

    ephererid 评论0 收藏0
  • Python数据挖掘与机器学习技术入门实战

    摘要:在本次课程中,着重讲解的是传统的机器学习技术及各种算法。回归对连续型数据进行预测趋势预测等除了分类之外,数据挖掘技术和机器学习技术还有一个非常经典的场景回归。 摘要: 什么是数据挖掘?什么是机器学习?又如何进行Python数据预处理?本文将带领大家一同了解数据挖掘和机器学习技术,通过淘宝商品案例进行数据预处理实战,通过鸢尾花案例介绍各种分类算法。 课程主讲简介:韦玮,企业家,资深IT领...

    孙吉亮 评论0 收藏0

发表评论

0条评论

young.li

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<