10.2 AdaBost(Adaptive Boosting)
10.2.1 概念
集成学习模型的方式大致为四个:bagging 、 boosting 、 voting 、 stacking.
步骤:
- 初始化,对m个训练样本的数据集(不同颜色代表不同数据集),给每个样本分配初始权重(圆点越大,权重越大)。
- 使用带权重的数据集训练处一个弱学习器。
- 对弱学习器训练的错误样本增加权重。
- 新的带权重的数据集训练处下一个弱学习器。
- 如此重复,直到训练处的弱学习器达到事先指定的N,最终将N个弱学习器加权融合。
10.2.2 AdaBoosst(adaptive boosting)
最著名:AdaBoosst(adaptive boosting)算法
AdaBoostClassifier
类参数、属性和方法
类
代码语言:javascript复制class sklearn.ensemble.AdaBoostClassifier(base_estimator=None, *, n_estimators=50, learning_rate=1.0, algorithm='SAMME.R', random_state=None
属性
属性 | 类型 | 解释 |
---|---|---|
base_estimator_ | estimator | 从中生成集合的基估计量。 |
estimators_ | list of classifiers | 拟合子估计量的集合。 |
classes_ | ndarray of shape (n_classes,) | 类标签。。 |
n_classes_ | int | 类的数量。 |
estimator_weights_ | ndarray of floats | 增强集合中每个估计器的权重。 |
estimator_errors_ | ndarray of floats | 增强集合中每个估计器的分类误差。 |
feature_importances_ | ndarray of shape (n_features,) | 基于杂质的特征非常重要。 |
方法
decision_function(X) | 计算X的决策函数。 |
---|---|
fit(X, y[, sample_weight]) | 从训练集(X,y)构建一个增强的分类器。 |
get_params([deep]) | 获取此估计器的参数。 |
predict(X) | 预测X的类。 |
predict_log_proba(X) | 预测X的类对数概率。 |
predict_proba(X) | 预测X的类概率。 |
score(X, y[, sample_weight]) | 返回给定测试数据和标签的平均精度。 |
set_params(**params) | 设置此估计器的参数。 |
staged_decision_function(X) | 计算每个boosting迭代X的决策函数。 |
staged_predict(X) | 返回X的阶段性预测。 |
staged_predict_proba(X) | 预测X的类概率。 |
staged_score(X, y[, sample_weight]) | 返回X,y的阶段分数。 |
鸢尾花AdaBoostClassifier分类算法
代码语言:javascript复制def iris_of_AdaBoostClassifier():
myutil = util()
X,y = datasets.load_iris().data,datasets.load_iris().target
X1 = datasets.load_iris().data[:,:2]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
title = "AdaBoostClassifier鸢尾花数据"
clf = AdaBoostClassifier(n_estimators=50,random_state=11)
clf.fit(X_train, y_train)
myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
myutil.plot_learning_curve(AdaBoostClassifier(n_estimators=50,random_state=11),X,y,title)
myutil.show_pic(title)
clf = AdaBoostClassifier(n_estimators=50,random_state=11).fit(X1,y)
myutil.draw_scatter_for_clf(X1,y,clf,title)
输出
代码语言:javascript复制AdaBoostClassifier鸢尾花数据:
96.67%
AdaBoostClassifier鸢尾花数据:
93.33%
红酒AdaBoostClassifier分类算法
def wine_of_AdaBoostClassifier():
代码语言:javascript复制 myutil = util()
X,y = datasets.load_wine().data,datasets.load_wine().target
X1 = datasets.load_wine().data[:,:2]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
title = "AdaBoostClassifier红酒数据"
clf = AdaBoostClassifier(n_estimators=50,random_state=11)
clf.fit(X_train, y_train)
myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
myutil.plot_learning_curve(AdaBoostClassifier(n_estimators=50,random_state=11),X,y,title)
myutil.show_pic(title)
clf = AdaBoostClassifier(n_estimators=50,random_state=11).fit(X1,y)
myutil.draw_scatter_for_clf(X1,y,clf,title)
输出
代码语言:javascript复制AdaBoostClassifier红酒数据:
96.48%
AdaBoostClassifier红酒数据:
97.22%
乳腺癌AdaBoostClassifier分类算法
代码语言:javascript复制def breast_cancer_of_AdaBoostClassifier():
myutil = util()
X,y = datasets.load_breast_cancer().data,datasets.load_breast_cancer().target
X1 = datasets.load_breast_cancer().data[:,:2]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
title = "AdaBoostClassifier乳腺癌数据"
clf = AdaBoostClassifier(n_estimators=50,random_state=11)
clf.fit(X_train, y_train)
myutil.print_scores(clf,X_train,y_train,X_test,y_test,title)
myutil.plot_learning_curve(AdaBoostClassifier(n_estimators=50,random_state=11),X,y,title)
myutil.show_pic(title)
clf = AdaBoostClassifier(n_estimators=50,random_state=11).fit(X1,y)
myutil.draw_scatter_for_clf(X1,y,clf,title)
输出
代码语言:javascript复制AdaBoostClassifier乳腺癌数据:
100.00%
AdaBoostClassifier乳腺癌数据:
93.86%