Adaboost算法

文章目录

例如:Python 机器学习入门之adaboost算法



前言

Adaboost算法是一种提升方法,将多个弱分类器,组合成强分类器。中文名为自适应增强。它的自适应在于:前一个弱分类器分错的样本的权值(样本对应的权值)会得到加强,权值更新后的样本再次被用来训练下一个新的弱分类器。在每轮训练中,用总体(样本总体)训练新的弱分类器,产生新的样本权值、该弱分类器的话语权,一直迭代直到达到预定的错误率或达到指定的最大迭代次数。


一、算法原理

(1)初始化训练数据(每个样本)的权值分布:如果有N个样本,则每一个训练的样本点最开始时都被赋予相同的权重:1/N。
(2)训练弱分类器。具体训练过程中,如果某个样本已经被准确地分类,那么在构造下一个训练集中,它的权重就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。同时,得到弱分类器对应的话语权。然后,更新权值后的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
(3)将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,分类误差率小的弱分类器的话语权较大,其在最终的分类函数中起着较大的决定作用,而分类误差率大的弱分类器的话语权较小,其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的比例较大,反之较小。

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import sklearn.metrics as sm
import matplotlib.pyplot as plt
from sklearn.utils import shuffle
from sklearn import datasets
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import AdaBoostRegressor

2.读入数据

代码如下:

housing_data = datasets.load_boston()
X,y = shuffle(housing_data.data,housing_data.target,random_state=7)

number_train = int(0.8*len(X))

x_train = X[:number_train]
y_train = y[:number_train]

x_test = X[number_train:]
y_test = y[number_train:]

3.建立决策树并使用adaboost增强

dt_regressor = DecisionTreeRegressor(max_depth=4)
dt_regressor.fit(x_train,y_train)

ab_regressor = AdaBoostRegressor(DecisionTreeRegressor(max_depth=4),n_estimators=400,
    random_state=7)
ab_regressor.fit(x_train,y_train)

y_pre_dt = dt_regressor.predict(x_test)
mse = sm.mean_squared_error(y_test,y_pre_dt)
evs = sm.explained_variance_score(y_test,y_pre_dt)
print("\n决策树学习效果\n",f"均方误差={round(mse,2)}\n解释方差分={round(evs,2)}")
y_pre_ab = ab_regressor.predict(x_test)
mse = sm.mean_squared_error(y_test,y_pre_ab)
evs = sm.explained_variance_score(y_test,y_pre_ab)
print("\n决策树学习效果\n",f"均方误差={round(mse,2)}\n解释方差分={round(evs,2)}")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值