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
类参数、属性和方法
类
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分类算法
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)
输出
AdaBoostClassifier鸢尾花数据: 96.67% AdaBoostClassifier鸢尾花数据: 93.33%
红酒AdaBoostClassifier分类算法
def wine_of_AdaBoostClassifier():
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)
输出
AdaBoostClassifier红酒数据: 96.48% AdaBoostClassifier红酒数据: 97.22%
乳腺癌AdaBoostClassifier分类算法
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)
输出
AdaBoostClassifier乳腺癌数据: 100.00% AdaBoostClassifier乳腺癌数据: 93.86%