Python进行Bagging和Adaboost

  • 一、Bagging
    • 第一步,导入数据和库;
    • 第二步,数据处理;
    • 第三步,Bagging;
    • 第四步,模型评价;
      • (1)混淆矩阵
      • (2)ROC曲线
  • 二、Adaboost
    • 第一步,Adaboost;
    • 第二步,模型评价
      • (1)混淆矩阵
      • (2)ROC曲线

一、Bagging

第一步,导入数据和库;

# 导入库
from sklearn import datasets
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 使文字可以展示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 使负号可以展示
plt.rcParams['axes.unicode_minus'] = False# 读取数据
data = pd.read_excel('F:\\Desktop\\建模数据.xlsx')
data[:5]

第二步,数据处理;

# 设置 X 和 y
X = data.iloc[:, 1:]
y = data.iloc[:, 0]from sklearn.cross_validation import train_test_split
# 设置训练数据集和测试数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)# 数据标准化
from sklearn.preprocessing import StandardScaler
stdsc = StandardScaler()
# 将训练数据标准化
X_train_std = stdsc.fit_transform(X_train)
# 将测试数据标准化
X_test_std = stdsc.transform(X_test)

第三步,Bagging;

# 拟合500棵决策树
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifiertree = DecisionTreeClassifier(criterion='entropy', max_depth=None,random_state=1)bag = BaggingClassifier(base_estimator=tree,n_estimators=500, max_samples=1.0, max_features=1.0, bootstrap=True, bootstrap_features=False, n_jobs=1, random_state=1)
# 比较 单个决策树 和 bagging 的区别
from sklearn.metrics import accuracy_scoretree = 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))bag = bag.fit(X_train, y_train)
y_train_pred = bag.predict(X_train)
y_test_pred = bag.predict(X_test)bag_train = accuracy_score(y_train, y_train_pred)
bag_test = accuracy_score(y_test, y_test_pred)
# 查看训练集和测试集的准确率
print('Bagging train/test accuracies %.3f/%.3f'% (bag_train, bag_test))

第四步,模型评价;

(1)混淆矩阵
# 绘制Bagging混淆矩阵
from sklearn.metrics import confusion_matrix
y_pred1 = bag.predict(X_test)
confmat1 = confusion_matrix(y_true=y_test, y_pred=y_pred1)
print(confmat1)
# 将混淆矩阵可视化
# 将混淆矩阵可视化
fig, ax = plt.subplots(figsize=(2.5, 2.5))
ax.matshow(confmat1, cmap=plt.cm.Blues, alpha=0.3)
for i in range(confmat1.shape[0]):for j in range(confmat1.shape[1]):ax.text(x=j, y=i, s=confmat1[i, j], va='center', ha='center')plt.xlabel('预测类标')
plt.ylabel('真实类标')
plt.show()

(2)ROC曲线
from sklearn.metrics import roc_curve, auc
from scipy import interp# 设置图形大小
fig = plt.figure(figsize=(7, 5))# 计算 预测率---使用测试数据集
probas = tree.fit(X_train, y_train).predict_proba(X_test)
probas1 = bag.fit(X_train, y_train).predict_proba(X_test)# 计算 fpr,tpr
fpr, tpr, thresholds = roc_curve(y_test, probas[:, 1], pos_label=1)
fpr1, tpr1, thresholds1 = roc_curve(y_test, probas1[:, 1], pos_label=1)# 计算 AUC 值
roc_auc = auc(fpr, tpr)
roc_auc1 = auc(fpr1, tpr1)# 画 ROC 曲线
plt.plot(fpr, tpr, lw=1, color = 'b', label='决策树ROC (area = %0.2f)' % ( roc_auc))plt.plot(fpr1, tpr1, lw=1, color = 'y', label='BaggingROC (area = %0.2f)' % ( roc_auc1))# 画斜线
plt.plot([0, 1], [0, 1], linestyle='--', color=(0.6, 0.6, 0.6), label='random guessing')
# 画完美表现 线
plt.plot([0, 0, 1], [0, 1, 1], lw=2, linestyle=':', color='black', label='perfect performance')
# 设置坐标轴范围
plt.xlim([-0.05, 1.05])
plt.ylim([-0.05, 1.05])
# 设置坐标轴标题
plt.xlabel('假正率')
plt.ylabel('真正率')
# 设置标题
plt.title('')
# 设置图例位置
plt.legend(loc="lower right")
plt.show()

二、Adaboost

第一步,Adaboost;

from sklearn.ensemble import AdaBoostClassifiertree = DecisionTreeClassifier(criterion='entropy', max_depth=1,random_state=0)ada = AdaBoostClassifier(base_estimator=tree,n_estimators=500, learning_rate=0.1,random_state=0)# # 比较 决策树 和 Adaboost 的区别
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))

第二步,模型评价

(1)混淆矩阵
# 绘制Adaboost混淆矩阵
from sklearn.metrics import confusion_matrix
y_pred1 = ada.predict(X_test)
confmat1 = confusion_matrix(y_true=y_test, y_pred=y_pred1)
print(confmat1)
# 将混淆矩阵可视化
fig, ax = plt.subplots(figsize=(2.5, 2.5))
ax.matshow(confmat1, cmap=plt.cm.Blues, alpha=0.3)
for i in range(confmat1.shape[0]):for j in range(confmat1.shape[1]):ax.text(x=j, y=i, s=confmat1[i, j], va='center', ha='center')plt.xlabel('预测类标')
plt.ylabel('真实类标')
plt.show()

(2)ROC曲线
from sklearn.metrics import roc_curve, auc
from scipy import interp# 设置图形大小
fig = plt.figure(figsize=(7, 5))# 计算 预测率---使用测试数据集
probas = tree.fit(X_train, y_train).predict_proba(X_test)
probas1 = ada.fit(X_train, y_train).predict_proba(X_test)# 计算 fpr,tpr
fpr, tpr, thresholds = roc_curve(y_test, probas[:, 1], pos_label=1)
fpr1, tpr1, thresholds1 = roc_curve(y_test, probas1[:, 1], pos_label=1)# 计算 AUC 值
roc_auc = auc(fpr, tpr)
roc_auc1 = auc(fpr1, tpr1)# 画 ROC 曲线
plt.plot(fpr, tpr, lw=1, color = 'b', label='决策树ROC (area = %0.2f)' % ( roc_auc))plt.plot(fpr1, tpr1, lw=1, color = 'y', label='AdaROC (area = %0.2f)' % ( roc_auc1))# 画斜线
plt.plot([0, 1], [0, 1], linestyle='--', color=(0.6, 0.6, 0.6), label='random guessing')
# 画完美表现 线
plt.plot([0, 0, 1], [0, 1, 1], lw=2, linestyle=':',  color='black',label='perfect performance')
# 设置坐标轴范围
plt.xlim([-0.05, 1.05])
plt.ylim([-0.05, 1.05])
# 设置坐标轴标题
plt.xlabel('假正率')
plt.ylabel('真正率')
# 设置标题
plt.title('')
# 设置图例位置
plt.legend(loc="lower right")
plt.show()

Python进行Bagging和Adaboost相关推荐

  1. 机器学习 集成学习篇——python实现Bagging和AdaBOOST算法

    机器学习 集成学习篇--python实现Bagging和AdaBOOST算法 摘要 Bagging算法 Adaboost算法 摘要 本文通过python实现了集成学习中的Bagging和AdaBOOS ...

  2. 集成学习(Bagging和AdaBoost和随机森林(random forest))

    前言 集成学习的特点就是一个最终模型由很多分类器集成起来,最终通过投票或者加权的方式来获得最终结果.有两种经典的方法:bagging和adaboost. bagging bagging做法 其中: y ...

  3. Jackknife,Bootstrap, bagging, boosting, AdaBoost, Rand forest 和 gradient boosting的区别

    Jackknife,Bootstrap, bagging, boosting, AdaBoost, Rand forest 和 gradient boosting 这些术语,我经常搞混淆,现在把它们放 ...

  4. 【李宏毅2020 ML/DL】补充:Ensemble: Bagging, Boosting, Adaboost, Gradient Boosting, Stacking

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.在另一个UP主上传的2017课程BV13x411v7U ...

  5. Jackknife,Bootstrap, Bagging, Boosting, AdaBoost, RandomForest 和 Gradient Boosting的区别

    Bootstraping: 名字来自成语"pull up by your own bootstraps",意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统 ...

  6. 机器学习之Ensemble(Bagging、AdaBoost、GBDT、Stacking)

    集成学习,其实就是通过构建并结合多个学习器来完成学习任务. 前面刚学的随机森林就是一种集成学习方法,随机森林(广义上的)就是由多个分类器,比如决策树,SVM等集合而成的一种模型. 本文借助了李宏毅机器 ...

  7. Python机器学习算法之AdaBoost算法

    AdaBoost算法 1.算法概述 2.算法原理 3.算法步骤 4.算法实现 5.算法优化 1.算法概述 AdaBoost 是英文 Adaptive Boosting(自适应增强)的缩写,由 Yoav ...

  8. 机器学习经典算法详解及Python实现--元算法、AdaBoost

    http://blog.csdn.net/suipingsp/article/details/41822313 第一节,元算法略述 遇到罕见病例时,医院会组织专家团进行临床会诊共同分析病例以判定结果. ...

  9. 机器学习两大利器:Boosting 与 AdaBoost

    本文经机器之心(almosthuman2014) 授权转载,禁止二次转载 在 Kaggle 及其它机器学习任务中,集成方法非常流行,不论是 还是随机森林,它们都强大无比.而本文作者从最基础的 Boos ...

最新文章

  1. elasticsearch 集群在线水平扩容收缩
  2. vue生命周期及双向绑定
  3. ADO.NET之一:连接层
  4. Django使用MySQL笔记
  5. Linux 文本界面转到图形界面
  6. Android开发日常笔记
  7. CSS的优先级和继承性
  8. ArcGIS License Manager 更新
  9. springboot @PropertySource+@Value注入properties配置文件属性值
  10. USB3.0超高速接口应用方案
  11. 如何使用 Kafka、MongoDB 和 Maxwell’s Daemon 构建 SQL 数据库的审计系统
  12. 06-01 搭建持续集成平台 Jenkins
  13. risksystem_环境风险评价系统(RiskSystem)
  14. 23位子网掩码是多少_24 28 30 位的子网掩码是多少
  15. 星际争霸2 AI开发
  16. Matplotlib做动图(基础版)
  17. Arduino_mega2560+DynamixelShield控制MX-64R舵机
  18. 微信小程序获取openid等参数报错errcode:48001 errmsg:'api unauthorized'
  19. PCA降维方法及在ATT人脸数据集的应用实例
  20. 丁香园技术负责人冯大辉近日在知乎上披露了当年共同创办阿里巴巴的18个合伙人的近况:

热门文章

  1. 上传大文件(10G)的解决方案
  2. 称为超级计算机,哪台机器被称为世界上最快的超级计算机?
  3. 英文连写字体怎么练_衡水体英文字体,你必须知道的技巧和注意事项!(建议收藏)...
  4. datatable render formatter
  5. 【SpringCloud系列】服务注册与发现 - Eureka Server源码分析(2)
  6. it行业热门岗位推荐,高薪就业不发愁
  7. cin、cout的使用
  8. 编程珠玑微信公众号-算法位运算
  9. 一个大四前端实习生的2018年总结
  10. scala 中缀表达式和中置操作符