您的位置:首页 > 科技 > IT业 > 【Python机器学习】利用AdaBoost元算法提高分类性能——基于AdaBoost的分类

【Python机器学习】利用AdaBoost元算法提高分类性能——基于AdaBoost的分类

2024/10/6 10:42:24 来源:https://blog.csdn.net/weixin_39407597/article/details/140935712  浏览:    关键词:【Python机器学习】利用AdaBoost元算法提高分类性能——基于AdaBoost的分类

一旦拥有了多个弱分类以及其对应的alpha值,进行测试就变得非常容易了。现在,要将弱分类器的训练过程从程序中抽出来,然后应用在某个具体的实例上。每个弱分类器的结果以其对应的alpha值作为权重。所有这些弱分类器的结果加权求和就得到了最后的结果。

下面,用代码具体实现:

def adaClassify(datToClass,classifierArr):dataMatrix=mat(datToClass)m=shape(dataMatrix)[0]aggClassEst=mat(zeros((m,1)))for i in range(len(classifierArr)):classEst=stumpClassify(dataMatrix,classifierArr[i]['dim'],classifierArr[i]['thresh'],classifierArr[i]['ineq'])aggClassEst=aggClassEst+classifierArr[i]['alpha']*classEstprint(aggClassEst)return sign(aggClassEst)

上述的adaClassify()函数就是利用训练出的多个弱分类器进行分类的函数。该函数的输入是由一个或多个待分类样例datToClass以及多个弱分类器组成的数组classifierArr。函数adaClassify()首先将datToClass转换成了一个NumPy矩阵,并且得到datToClass中的待分类样例的个数m。然后构建一个0列向量aggClassEst,这个列向量与adaBoostTrainDS()中的含义相同。

接下来,遍历classifierArr中的所有弱分类器,并基于stumpClassify()对每个分类器得到一个类别的估计值。在前面构建单层决策树时,stumpClassify()在所有可能的树桩值上进行迭代来得到具有最小加权错误率的单层决策树。但在这里我们只是简单地应用了单层决策树。输出的类别估计值乘上该单层决策树的alpha权重然后累加到aggClassEst上,就完成了这一过程。最后,程序返回aggClassEst的符号,即如果aggClassEst大于0则返回+1,而如果小于0则返回-1。

实际运行:

datArr,labelArr=loadSimpData()
classifierArr=adaBoostTrainDS(datArr,labelArr,30)
print(adaClassify([0,0],classifierArr))

可以发现,随着迭代的进行,数据点[0,0]的分类结果越来越强。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com