注:adaboost可以做分类也可以做回归,本篇以构建二分类模型为例,通过手写代码,加深对算法原理与流程的理解。
一、算法类型
有监督的分类算法
二、算法原理
- 分类器的错误率:

- 弱分类器的权重:

注:错误率越高,该分类器的权重越小
- 正确分类的样本权重:

- 错误分类的样本权重:

注:初始化样本权重是相等的;如果该样本被错误分类,则在下一轮该样本的权重被提高
三、手写Python算法
def classify(xmat,i,threshold,mark):
'''
函数功能:单层决策树分类函数
参数说明:
xmat:特征矩阵
i:第i个特征
threshold:切分点的特征值
mark:标志,取值'less_than(含相当)'或'greater_than'
返回:
label:二分类结果,暂用1和-1表示,这样做有两个好处,详见下面。
'''
label=np.ones((xmat.shape[0],1))
if mark=='less_than':
label[xmat[:,i] <= threshold]=-1 #注:不能是0。
else:
label[xmat[:,i] > threshold]=-1
return label
def best_tree_stump(xmat,ymat,W):
'''
函数功能:寻找最佳的单层决策树
参数说明:
xmat:特征矩阵
ymat:标签矩阵
W:样本权重
返回:
beststump:最佳单层决策树,字典格式
minE:最小误差
bestlabel:最佳的分类结果
'''
N,M=xmat.shape
steps=10 #初始化步数
beststump={

本文介绍了Adaboost算法,它是一种有监督的分类算法,主要用于构建二分类模型。文章通过手写Python代码详细解释了算法原理,包括弱分类器的权重计算和样本权重更新,帮助读者深入理解算法流程。同时,还提供了调用Python库实现Adaboost的方法。
最低0.47元/天 解锁文章
380





