机器学习之sklearn工具包(AdaBoost算法)

本文介绍了AdaBoost算法,通过算法的原理图和逐步的代码实现,展示了如何构建多棵决策树并结合权重进行提升。文章引用了详细解读链接,帮助读者深入理解该算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AdaBoost算法

算法的原理图

在这里插入图片描述

用代码实现AdaBoost算法

import numpy as np
from sklearn.ensemble import AdaBoostClassifier
from sklearn import tree
import matplotlib.pyplot as plt
X=np.arange(10).reshape(-1,1)
y=np.array([1,1,1,-1,-1,-1,1,1,1,-1])
ada=AdaBoostClassifier(n_estimators=3,algorithm='SAMME')
ada.fit(X,y)
plt.figure(figsize=(9,6))
_=tree.plot_tree(ada[0])
plt.show()
y_=ada[0].predict(X)
# 误差率
e1=np.round(0.1*(y!=y_).sum(),4)
# 计算第一颗树的权重
# 在随机森林中每棵树的权重是相同的
# adaboost提升树中每棵树的权重不同
a1=np.round(1/2*np.log((1-e1)/e1),4)
# 样本预测正确:更新的权重
w2=0.1*np.e**(-a1*y*y_)
w2=np.round(w2/w2.sum(),4)
# 分类函数f1(x)=a1*G(x)=0.4236G1(x)

# 第二棵树
plt.figure(figsize=(9,6))
_=tree.plot_tree(ada[1])
plt.show()
# 误差率
e2=0.0714*3
a2=np.round(1/2*np.log((1-e2)/e2),4)
y_=ada[1].predict(X)
w3=w2*np.e**(-a2*y*y_)
w3=np.round(w3/w3.sum(),4)

# 第三棵树
plt.figure(figsize=(9,6))
_=tree.plot_tree(ada[2])
plt.show()
y_=ada[2].predict(X)
# 误差率
e3=(w3*(y_!=y)).sum()
a3=np.round(1/2*np.log((1-e3)/e3),4)

# 弱分类器合并成强分类器,加和
# G(x)=sign[f3(x)]=sign[a1*G1(x)+a2*G2(x)+a3*G3(x)]
y_predict=ada.predict(X)
print('y_predict=',y_predict)
y_predict1=a1*ada[0].predict(X)+a2*ada[1].predict(X)+a3*ada[2].predict(X)
y_predict1=np.sign(y_predict1)
print('y_predict1',y_predict1)

第一棵决策树
在这里插入图片描述
第二颗决策树
在这里插入图片描述
第三棵决策树
在这里插入图片描述

#结果
y_predict= [ 1  1  1 -1 -1 -1  1  1  1 -1]
y_predict1 [ 1.  1.  1. -1. -1. -1.  1.  1.  1. -1.]

原理解读参考https://blog.youkuaiyun.com/tiandijun/article/details/48036025?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158824454019725247660731%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.57674%2522%257D&request_id=158824454019725247660731&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值