Python算法总结(七)Adaboost(附手写python实现代码)

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

注: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={
   
   
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值