# -*- coding: utf-8 -*-
'''
Created on 2020年5月11日
@author: Bobo.Y
@summary: Boosting,无放回抽样,串行训练基学习器,用整个训练集来训练弱学习机,训练样本在每次迭代中都会重新赋予一个权重,在上一弱学习机错误的基础上进行学习进而构建一个更强大的分类器。
'''
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt# 导入数据和数据处理
df_wine = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data', header=None)
df_wine.columns = ['Class label', 'Alcohol', 'Malic acid', 'Ash', 'Alcalinity of ash', 'Magnesium', 'Total phenols','Flavanoids', 'Nonflavanoid phenols', 'Proanthocyanins', 'Color intensity', 'Hue','OD280/OD315 of diluted wines', 'Proline']
print('class labels:', np.unique(df_wine['Class label']))
df_wine = df_wine[df_wine['Class label'] != 1]  # 选择2和3类别
y = df_wine['Class label'].values
X = df_wine[['Alcohol', 'Hue']].values  # 选择Alcohol和 Hue两个特征
le = LabelEncoder()
y = le.fit_transform(y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.40, random_state=1)
# 引用BaggingClassifier训练
tree = DecisionTreeClassifier(criterion='entropy', max_depth=None)  # 构建基学习器
ada = AdaBoostClassifier(base_estimator=tree, n_estimators=500, learning_rate=0.1, random_state=0)
# 评分,比较baggin集成器和单颗未剪枝决策树的性能差异
# 单颗树评估
tree = tree.fit(X_train, y_train)
y_train_pred = tree.predict(X_train)
y_test_pred = tree.predict(X_test)
tree_train = accuracy_score(y_train, y_train_pred)
tree_test = accuracy_score(y_test, y_test_pred)
print('Decision tree train/test accuracies %.3f/%.3f' % (tree_train, tree_test))  # 未剪枝,过拟合
# 集成器评估
ada = ada.fit(X_train, y_train)
y_train_pred = ada.predict(X_train)
y_test_pred = ada.predict(X_test)
ada_train = accuracy_score(y_train, y_train_pred)
ada_test = accuracy_score(y_test, y_test_pred)
print('Adaboost train/test accuracies %.3f/%.3f' % (ada_train, ada_test))
# 可视化决策区域
x_min = X_train[:, 0].min() - 1
x_max = X_train[:, 0].max() + 1
y_min = X_train[:, 1].min() - 1
y_max = X_train[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min, y_max, 0.1))
f, axarr = plt.subplots(nrows=1, ncols=2, sharex='col', sharey='row', figsize=(8, 3))
for idx, clf, tt in zip([0, 1], [tree, ada], ['Decision Tree', 'Adaboost']):clf.fit(X_train, y_train)Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])Z = Z.reshape(xx.shape)axarr[idx].contourf(xx, yy, Z, alpha=0.3)axarr[idx].scatter(X_train[y_train == 0, 0], X_train[y_train == 0, 1], c='blue', marker='^')axarr[idx].scatter(X_train[y_train == 1, 0], X_train[y_train == 1, 1], c='red', marker='o')axarr[idx].set_title(tt)
axarr[0].set_ylabel('Alcohol', fontsize=12)
plt.text(10.2, -1.2, s='Hue', ha='center', va='center', fontsize=12)
plt.show()

结果:

class labels: [1 2 3]
Decision tree train/test accuracies 1.000/0.854
Adaboost train/test accuracies 1.000/0.833

机器学习之监督学习(五)——集成学习(Boosting)相关推荐

  1. 【机器学习】集成学习—Boosting—GBM(Gradient Boosting Machine)解析

    [机器学习]集成学习-Boosting-GBM(Gradient Boosting Machine)解析 文章目录 [机器学习]集成学习-Boosting-GBM(Gradient Boosting ...

  2. 笔记—集成学习—Boosting

    集成学习--Boosting 一.引言 在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型.但是,实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模 ...

  3. 机器学习系列笔记十三: 集成学习/模型聚合

    机器学习系列笔记十三: 集成学习/模型聚合 文章目录 机器学习系列笔记十三: 集成学习/模型聚合 什么是集成学习 Voting Hard Voting 模拟实现Hard Voting 集成学习 使用V ...

  4. 集成学习-Boosting集成学习算法GBDT

    GBDT算法的核心为:先构造一个(决策)树,然后不断在已有模型和实际样本输出的残差上再构造一颗树,依次迭代. 目录 Decistion Tree(决策树) Gradient Boosting(梯度提升 ...

  5. python神经网络算法pdf_Python与机器学习实战 决策树、集成学习、支持向量机与神经网络算法详解及编程实现.pdf...

    作 者 :何宇健 出版发行 : 北京:电子工业出版社 , 2017.06 ISBN号 :978-7-121-31720-0 页 数 : 315 原书定价 : 69.00 主题词 : 软件工具-程序设计 ...

  6. 04 集成学习 - Boosting - AdaBoost算法构建

    03 集成学习 - Boosting - AdaBoost算法原理 十.AdaBoost算法构建 上一章最后说明了每个基模型的权值α是如何求得的,于是我就可以对模型进行更新操作了. 构建过程一 1.假 ...

  7. 集成学习——Boosting(AdaBoost,Gradient Boosting)

    集成学习--Boosting 与bagging方法不同,boosting中各个分类器串行生成,第Hn个分类器会受到Hn-1个分类器的影响.其主要思想是使下一个分类器更加关注于在上一个分类器上不能很好预 ...

  8. 西瓜书+实战+吴恩达机器学习(十一)监督学习之集成学习

    文章目录 0. 前言 1. 集成方法 2. 结合策略 2.1. 平均法 2.2. 投票法 2.3. 学习法 3. 多样性度量 4. 多样性增强 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔, ...

  9. python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 可以通过聚集多个分类器的预测结果提高分类器的分类准确率,这一方法称为集成(Ensemble)学习或分类器组合(Classifier C ...

  10. 机器学习算法——详细介绍 集成学习,以及什么是Bagging、随机森林、Boosting、XGBoost

    目录 一.集成学习算法简介 1.什么是集成学习 2.机器学习的两个核心任务 3.集成学习中boosting和Bagging 4.小结 二.Bagging和随机森林 1.Bagging集成原理 2.随机 ...

最新文章

  1. ubuntu 下安装nginx
  2. 千方百计管理系统服务器地址,千方百计医药管理系统如何查库存
  3. Android魔法(第四弹)—— 一步步实现百叶窗效果
  4. codeforces上红记
  5. 三角形和矩形傅里叶变换_信号与系统:第三章傅立叶变换2.ppt
  6. php如何做水仙花数,使用PHP实现水仙花数及各种特殊有趣数的输出
  7. 路由器距离向量算法计算举例_文本去重算法:Minhash/Simhash/Klongsent
  8. 市场的争夺-联通丢了校园投资、当当网主动发掘客户
  9. shell监控Nginx服务是否存在的脚本
  10. C#制作多媒体播放器
  11. MFC串口发送数据大于128数据出错的解决办法(发送0xFE接收得到0x3F等问题)
  12. Q-routing发展以及原始实验复现
  13. 裁员潮下,你需要这 10 大神器
  14. ros使用自动驾驶数据集KITTI【1】介绍与可视化
  15. NVENC SDK 设置h264编码的slice划分问题
  16. PNP型三极管与NPN型三极管区别
  17. Greenplum数据库故障分析——can not listen port
  18. 特征多项式的基无关性
  19. 2022 SWPUCTF Web+Crypto方向wp
  20. Android点亮屏幕或屏幕解锁和锁定

热门文章

  1. 【编译原理笔记05】语法分析:FIRST集和FOLLOW集的计算,[非]递归的预测分析法,预测分析中的错误处理
  2. 【数据结构笔记18】堆中的路径与C实现(堆元素到根的路)径)
  3. mysql 锁监视器_MySQL锁监视器
  4. linux eclipse web项目,Eclipse中web项目部署至Tomcat步骤
  5. kafka 同步提交 异步_Kafka 位移提交那些事儿
  6. 银行卡号,指定字符长度分割字符串
  7. 文都计算机统考讲义,考研计算机文都基础班讲义.doc
  8. jquery基础知识(一)
  9. flex中list或Combox中的子项上移下移操作
  10. python棋盘覆盖_java实现的棋盘覆盖