机器学习集成学习——Adaboost分离器算法

news2024/12/28 3:00:03

系列文章目录

 机器学习之SVM分类器介绍——核函数、SVM分类器的使用

 机器学习的一些常见算法介绍【线性回归,岭回归,套索回归,弹性网络】

机器学习相关概念思维导图

文章目录

系列文章目录

前言

Adaboost算法的简单介绍

Adaboost算法相关函数简介

案例介绍

1、简单的Adaboost回归的示例

2、案例二

总结


前言

本文主要介绍Adaboost集成学习算法,以及一些案例举例

Adaboost算法的简单介绍

Adaboost是一种集成学习算法,用于构建一个强大的分类器或回归器。在Adaboost中,每个弱分类器/回归器都是由弱学习算法(例如决策树或线性回归)构成的。每个弱分类器/回归器都对样本进行分类或预测,并根据分类/预测的准确性进行加权。然后,所有弱分类器/回归器的加权和被用作最终分类器/回归器。Adaboost算法通过迭代地训练弱分类器/回归器,并调整样本的权重来提高整体模型的准确性。

Adaboost算法相关函数简介

Adaboost的相关函数包括AdaBoostClassifier和AdaBoostRegressor。这些函数都可以在sklearn.ensemble中找到。其中AdaBoostClassifier用于分类问题,AdaBoostRegressor用于回归问题。这些函数都包含许多参数,例如弱学习器,学习率和迭代次数。

案例介绍

1、简单的Adaboost回归的示例

import numpy as np
from sklearn.ensemble import AdaBoostRegressor
from sklearn.tree import DecisionTreeRegressor

# 生成训练数据
X = np.linspace(-np.pi, np.pi, 200)
y = np.sin(X)

# 创建决策树回归器
dt = DecisionTreeRegressor(max_depth=2)

# 创建Adaboost回归器
abr = AdaBoostRegressor(dt, n_estimators=100, learning_rate=0.1)

# 训练模型
abr.fit(X.reshape(-1, 1), y)

# 绘制结果
import matplotlib.pyplot as plt
plt.scatter(X, y, c='b', label='data')
plt.plot(X, abr.predict(X.reshape(-1, 1)), c='r', label='Adaboost Regressor')
plt.legend()
plt.show()

在这个例子中,我们使用Adaboost回归器来拟合正弦函数。我们使用决策树回归器作为弱学习器,并设置迭代次数为100,学习率为0.1。在训练完模型后,我们绘制了训练数据和拟合结果。

2、案例二

使用Adaboost分类器(基于SVM、决策树)对乳腺癌数据进行对比分析

#使用Adaboost分类器(基于SVM、决策树)对乳腺癌数据进行对比分析
#导入sklearn内置数据集 
from sklearn.datasets import load_breast_cancer
#导入乳腺癌数据
cancer =load_breast_cancer()
#导入sklearn中的模型验证类 
from sklearn.model_selection import train_test_split
#使用train_ test_split函数自动分割训练数据集和测试数据集
x_train,x_test,y_train,y_test = train_test_split(cancer.data,cancer.target,test_size=0.3)
#导人sklearn模块中的SVM包 
from sklearn import svm
svc = svm.SVC(kernel='linear',gamma=5)
svc.fit(x_train,y_train)
print("单个sVC在训练集上的性能:%.3f"%svc.score(x_train,y_train))
print("单个sVC在测试集上的性能:%.3f"%svc.score(x_test,y_test))
#导人sklearn模块中的AdaBoost分类器类 
from sklearn.ensemble import AdaBoostClassifier
#定义一个AdaBoost分类器对象,使用SVC分类器作为基分类器
abcl = AdaBoostClassifier(svm.SVC(kernel='linear',gamma=5),algorithm="SAMME",n_estimators=50,learning_rate=0.1)
abcl.fit(x_train,y_train)
print("nAdaBoot(SVC)在训练集上的性能:%.3f"%(abcl.score(x_train,y_train)))
print("AdaBoot(SVC)在测试集上的性能:%.3f"%(abcl.score(x_test,y_test)))
#导入sklearn模块中的决策树分类器类 
from sklearn.tree import DecisionTreeClassifier 
dtc = DecisionTreeClassifier()
dtc.fit(x_train,y_train)
print("单棵决策树在训练集上的性能:%.3f"%dtc.score(x_train,y_train))
print("单棵决策树在测试集上的性能:%.3f"%dtc.score(x_test,y_test))
#定义一个AdaBoost分类器对象,使用决策树分类器作为基分类器
abc2 = AdaBoostClassifier(DecisionTreeClassifier(),algorithm="SAMME",n_estimators=50,learning_rate=0.1)
abc2.fit(x_train,y_train)
print("\nAdaBoot(决策树)在训练集上的性能:%.3f"%abc2.score(x_train,y_train))
print("AdaBoot(决策树)在测试集上的性能:%.3f"%abc2.score(x_test,y_test))#输出二分类指标
y_predict =abcl.predict(x_test)
from sklearn import metrics
print('\n测试集混淆矩阵:\n',metrics.confusion_matrix(y_test,y_predict))
print('测试集准确率:%.3f'%(metrics.accuracy_score(y_test,y_predict)))
print('测试集精度:%.3f'%(metrics.precision_score(y_test,y_predict)))
print('测试集召回率:%.3f'%(metrics.recall_score(y_test,y_predict)))
print('测试集F1值:%.3f'%(metrics.f1_score(y_test,y_predict)))
print('测试集Fbeta值(beta=0.1):%.3f'%(metrics.fbeta_score(y_test,y_predict,beta=0.1)))
print('测试集Fbeta值(beta=10):%.3f'%(metrics.fbeta_score(y_test,y_predict,beta=10)))
print('测试集分类报告:\n',metrics.classification_report(y_test,y_predict,target_names=['class_0','class_I']))#观察弱分类器数量在测试集上分类准确度
abc_train_scores=[]
abc_test_scores=[] 
for i in range(1,50):
    abc = AdaBoostClassifier(DecisionTreeClassifier(),n_estimators=i)
    abc.fit(x_train,y_train)
    abc_train_scores.append(abc.score(x_train,y_train))
    abc_test_scores.append(abc.score(x_test,y_test))
import matplotlib.pyplot as plt
#解决图形中的中文显示乱码
plt.rcParams['font.sans-serif'] = ['SimHei']
#解决图形中的坐标轴负号显示问题
plt.matplotlib.rcParams['axes.unicode_minus']=False
plt.figure()
plt.title("AdaBoost算法在测试集上的性能")
plt.xlabel("基分类器数量")
plt.ylabel("准确率")
plt.plot(range(1,50),abc_train_scores,color='b',label='测试集')
plt.plot(range(1,50),abc_test_scores,color='r',label='训练集')
plt.legend()
plt.show()

运行结果:

单个sVC在训练集上的性能:0.965
单个sVC在测试集上的性能:0.959
nAdaBoot(SVC)在训练集上的性能:0.945
AdaBoot(SVC)在测试集上的性能:0.959
单棵决策树在训练集上的性能:1.000
单棵决策树在测试集上的性能:0.936

AdaBoot(决策树)在训练集上的性能:1.000
AdaBoot(决策树)在测试集上的性能:0.947

测试集混淆矩阵:
 [[66  5]
 [ 2 98]]
测试集准确率:0.959
测试集精度:0.951
测试集召回率:0.980
测试集F1值:0.966
测试集Fbeta值(beta=0.1):0.952
测试集Fbeta值(beta=10):0.980
测试集分类报告:
               precision    recall  f1-score   support

     class_0       0.97      0.93      0.95        71
     class_I       0.95      0.98      0.97       100

    accuracy                           0.96       171
   macro avg       0.96      0.95      0.96       171
weighted avg       0.96      0.96      0.96       171

37703340c276499e89d875cf796b94c8.png

 

总结

以上就是今天的内容~

最后欢迎大家点赞👍,收藏⭐,转发🚀,
如有问题、建议,请您在评论区留言💬哦。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/599950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何将Chrome浏览器重置为默认设置?

如何将Chrome浏览器重置为默认设置? 将 Chrome 设置重置为默认设置 您可随时在 Chrome 中恢复您的浏览器设置。如果所安装的应用或扩展程序在您不知情的情况下更改了设置,那么您可能需要这样做。不过,您保存的书签和密码不会被清除或更改。 …

数据库 期末复习(4) 概念数据库的设计

参考资料 :邹老师数据库课件 程老师数据库课件 战老师数据库课件 第一部分 为啥要引入概念数据库 感觉只有一个重点 实体联系模型----ER模型 第二部分-----实体联系模型 这个例子可以全看完之后再来看 举个例子:根据COMPANY数据库的需求来构造数据库模式:The com…

工业控制系统的设备如何加密防勒索病毒

场景描述 信息化时代发展迅速,数据防泄露一词也频繁的出现在我们身边。无论企业或政府单位,无纸化办公场景越来越多,数据泄露的时间也层出不穷。例如:世界最大职业中介网站Monster遭到黑客大规模攻击,黑客窃取在网站注…

Flume的安装和使用

安装Flume 1.1访问Flume的官网(http://flume.apache.org/download.html),下载Flume安装apache-flume-1.9.0-bin.tar.gz。或者下载我的百度网盘资源。把安装文件解压缩到windows操作“D:\”目录下,然后执行如下命令测试是否安装成…

JavaEE Servlet的API详解

Servlet的API详解O(∩_∩)O~: 文章目录 JavaEE & Servlet的API详解1. HttpServlet抽象类1.1 init方法1.2 destroy方法1.3 service方法 2. HttpRequest接口2.1 在浏览器上显示请求首行2.2 在浏览器上显示请求header2.3 getParameter方法 - 最常用的API之一2.4 js…

【MAC】nvm安装和使用

傻瓜式使用教程如下,不用担心443 和 mac的文件夹权限问题 ! 1.将nvm包clone下来并克隆到nvm 文件夹中 打开终端后执行: git clone https://gitee.com/mirrors/nvm.git ~/.nvm2.激活nvm sudo source ~/.nvm/nvm.sh接着就可以通过nvm ls命令…

2023/6/1总结

学习CSS 动画: 2023-05-31 21-48-43-504 效果图: 2023-06-01 13-58-26-168 3D转换 3D移动: transform:translateX() 在x轴移动 transform:translateY() 在y轴移动 transform:translateZ() 在z轴移动 transform:translate3d(x,y,z); …

程序设计综合实习(C语言):链表的创建

一、目的 1.掌握单向链表的概念 2.掌握单向链表的创建、查找、删除方法 二、实习环境 Visual Stdio 2022 三、实习内容、步骤与要求 1.创建一个单向链表,存放10个学生的学号,姓名,并输出这种10个学生的信…

分布式锁框架-Redisson

分布式锁框架-Redisson 一、Redisson介绍二、在SpringBoot中使用Redisson三、Redisson工作原理四、Redisson使用扩展4.1、Redisson单机连接4.2、Redisson集群连接4.3、Redisson主从连接 五、分布式锁总结5.1、分布式锁特点5.2、锁的分类5.3、Redission的使用 基于Redis看门狗机…

chatgpt赋能python:Python以图搜图:如何用Python优化SEO?

Python以图搜图:如何用Python优化SEO? 随着搜索引擎算法的普及,优化您的SEO策略需要更多的创意和技巧。一种方法是使用Python以图搜图,具有该技能可以使您的网站上升到搜索结果列表的顶部。在这篇文章中,我们将探讨Py…

在外部编译器中使用pyqgis

pyqgis_dragonzoebai的博客-CSDN博客 升级后整理 例如在vscode当中添加qgis提供的python解释器,那么就可以使用qgis.core等库 批量处理gdb文件夹,导出对应文件夹目录的geojson文件。 我的gdb文件均没有坐标系,因此需要自己设置正确的坐标系…

chatgpt赋能python:Python网页的SEO优化指南

Python 网页的 SEO 优化指南 在如今互联网高度竞争的时代,一个网站的优化已经成为了至关重要的一环,特别是 SEO 优化。而对于使用 Python 开发网站的人来说,如何进行 SEO 优化,也是需要着重考虑的问题。本文将介绍一些 Python 网…

BGP选路规则实验

1、BGP选路规则实验-基础配置 1)拓扑 2)基础配置 第一步:基础配置: R1的配置: sysname R1 # interface GigabitEthernet0/0/0 ip address 192.168.12.1 255.255.255.0 # interface GigabitEthernet0/0/1 ip addres…

DeiT详解:知识蒸馏的Transformer

DeiT详解:知识蒸馏的Transformer 0. 引言1. ViT2. DeiT2.1 知识蒸馏2.1.1 提出背景2.1.2 理论原理 2.2 DeiT模型 3. 总结 0. 引言 针对 ViT 需求数据量大、运算速度慢的问题,Facebook 与索邦大学 Matthieu Cord 教授合作发表 Training data-efficient i…

工控机设备安全-系统加固分析

工控设备安全现状 工业控制系统是支撑国民经济的重要设施,是工业领域的神经中枢。现在工业控制系统已经广泛应用于电力、通信、化工、交通、航天等工业领域,支撑起国计民生的关键基础设施。 随着传统的工业转型,数字化、网络化和智能化的工…

倾斜摄影三维模型数据的高程偏差修正的几何纠正技术方法探讨

倾斜摄影三维模型数据的高程偏差修正的几何纠正技术方法探讨 倾斜摄影是一种先进的数字摄影技术,可以生成高分辨率、高精度的三维模型数据。然而,在倾斜摄影中,由于相机的倾斜角度和地形的高程差异,可能会出现高程偏差问题。为了…

Java性能权威指南-总结4

Java性能权威指南-总结4 Java性能调优工具箱操作系统的工具和分析CPU运行队列磁盘使用率网络使用率 Java监控工具基本的VM信息 Java性能调优工具箱 操作系统的工具和分析 CPU运行队列 快速小结 检查应用性能时,首先应该审查CPU时间。优化代码的目的是提升而不是…

树莓派初体验:开机啦

感谢大佬的赞助,这玩意是真的贵哇,呜呜呜呜呜呜,根本买不起 一、烧录系统 需要:SD卡(推荐16G)、读卡器(推荐高速读卡器) 进入官网:https://www.raspberrypi.com/softwa…

《MYSQL必知必会》读书笔记2

哈夫曼树的学习: http://t.csdn.cn/XJhUI 创建计算字段 字段:基本上与列的意思相同(数据库列一般称为列,而字段通常用于计算字段连接上) 拼接字段 拼接:将值联结到一起构成单个值 把两个结拼接起来&a…

【2023最叼教程】Appium自动化环境搭建保姆级教程

APP自动化测试运行环境比较复杂,稍微不注意安装就会失败。我见过不少朋友,装了1个星期,Appium 的运行环境还没有搭好的。 搭建环境本身不是一个有难度的工作,但是 Appium 安装过程中确实存在不少隐藏的比较深的坑,如果…