MachineLearning—AdaBoost算法代码应用实现

发布时间:2025-09-11 12:56

学习编程逻辑,用代码实现思维导图。 #生活技巧# #学习技巧# #思维导图应用#

AdaBoost包含分类和回归两类,即AdaBoostClassifier和AdaBoostRegressor,其中分类使用了两种算法即SAMME和SAMME.R,在对AdaBoost算法进行调参时,主要包括两个部分。第一个是AdaBoost框架调参,另一个是对我们选择的弱分类器进行调参。下面以分类算法为例讲解。

base_estimator:弱学习器,默认一般是CART分类回归树,即DecisionTreeClassifier、DecisionTreeRegressor

algorithm:只AdaBoost分类算法有,其中SAMME使用样本集分类效果作为弱学习器权重,SAMME.R使用样本集分类的预测概率大小作为弱学习器权重。SAMME.R使用了概率度量的连续值,迭代一般比SAMME快,因此AdaBoostClassifier的默认算法algorithm的值也是SAMME.R。

loss:AdaBoost回归算法中用到,默认线性损失函数。线性误差、均方误差、指数误差。

n_estimators:弱学习的个数,默认50

learning_rate:取值范围0到1,代表的是弱学习器的权重衰减系数。

上面介绍的是框架的参数,下面介绍的是弱学习器参数。

max_features:默认分割时考虑所有特征,当特征很多时可以考虑按部分特征进行分割。

max_depth:决策树最大深度

min_samples_split:当某个叶节点样本数小于这个值时,则停止继续划分子树

min_samples_leaf:当某个叶节点样本数小于这个值时,则跟兄弟节点一起被剪枝

max_leaf_nodes:通过限制最大叶子节点数,可以防止过拟合

import numpy as np

import matplotlib.pyplot as plt

%matplotlib inline

from sklearn.ensemble import AdaBoostClassifier

from sklearn.tree import DecisionTreeClassifier

from sklearn.datasets import make_gaussian_quantiles

X1, y1 = make_gaussian_quantiles(cov=2.0,n_samples=500, n_features=2,n_classes=2, random_state=1)

X2, y2 = make_gaussian_quantiles(mean=(3, 3), cov=1.5,n_samples=400, n_features=2, n_classes=2, random_state=1)

X = np.concatenate((X1, X2))

y = np.concatenate((y1, - y2 + 1))

python

运行

plt.scatter(X[:, 0], X[:, 1], marker='o', c=y)

python

运行

bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),

algorithm="SAMME",

n_estimators=200, learning_rate=0.8)

bdt.fit(X, y)

python

运行

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1

y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1

xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.02),

np.arange(y_min, y_max, 0.02))

Z = bdt.predict(np.c_[xx.ravel(), yy.ravel()])

Z = Z.reshape(xx.shape)

cs = plt.contourf(xx, yy, Z, cmap=plt.cm.Paired)

plt.scatter(X[:, 0], X[:, 1], marker='o', c=y)

plt.show()

print("Score:", bdt.score(X,y))

python

运行

Score: 0.913333333333

python

运行

bdt = AdaBoostClassifier(DecisionTreeClassifier(max_depth=2, min_samples_split=20, min_samples_leaf=5),

algorithm="SAMME",

n_estimators=200, learning_rate=0.5)

bdt.fit(X, y)

print("Score:", bdt.score(X,y))

python

运行

Score: 0.895555555556

html

网址:MachineLearning—AdaBoost算法代码应用实现 https://www.yuejiaxmz.com/news/view/1290312

相关内容

自适应提升算法Adaboost及其变种SAMME与SAMME.R解析
机器学习建模神器PyCaret已开源!提升效率,几行代码轻松搞定模型
朴素贝叶斯算法的代码实例实现(python)
数码变焦算法优化与应用实践
机器学习笔记20——集成/提升(Boosting)系列算法之提升树(BDT) 算法原理以及python实现
如何应用零代码实现数据驱动?
机器学习(七):提升(boosting)方法
集成学习算法在新能源汽车市场中的分析和预测
遗传算法的发展现状与应用实例
【噪声控制】基于FXLMS算法实现有源噪声控制附Matlab代码

随便看看