首页 > 分享 > MachineLearning—AdaBoost算法代码应用实现

MachineLearning—AdaBoost算法代码应用实现

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))

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

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)

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))

Score: 0.913333333333

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))

Score: 0.895555555556

相关知识

Adaboost实现鸢尾花分类
【人工智能】基于分类算法的学生学业预警系统应用
花授粉优化算法及代码实现
遗传算法Matlab代码实现及其在推荐系统中的应用
Python原生代码实现KNN算法(鸢尾花数据集)
实现花卉分类的 MATLAB 代码及实例
卷积神经网络实现鸢尾花数据分类python代码实现
图像增强——传统算法伽马校正实现暗光增强(附Python代码)
细菌觅食算法:原理、案例与实现
KNN算法实现鸢尾花数据集分类

网址: MachineLearning—AdaBoost算法代码应用实现 https://m.huajiangbk.com/newsview1134453.html

所属分类:花卉
上一篇: 榕树外形特征
下一篇: GD32VF103 Bootst