Python实现AdaBoost分类模型(AdaBoostClassifier算法)项目实战

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: Python实现AdaBoost分类模型(AdaBoostClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

image.png

image.png

1.项目背景

AdaBoost是最优秀的Boosting算法之一, 有着坚实的理论基础, 在实践中得到了很好的推广和应用算法能够将比随机猜测略好的弱分类器提升为分类精度高的强分类器, 为学习算法的设计提供了新的思想和新的方法。AdaBoost算法的特点是对不同的样本赋予不同的权重。Ada,就是adaptive,翻译过来也就是自适应。AdaBoost是给不同的样本分配不同的权重,被分错的样本的权重在Boosting过程中会增大,新模型会因此更加关注这些被分错的样本,反之,样本的权重会减小。然后,将修改过权重的新数据集输入下层模型进行训练,最后将每次得到的基模型组合起来,也根据其分类错误率对模型赋予权重,集成为最终的模型。 

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下

编号 

变量名称

描述

1

Id

Id

2

SepalLengthCm

花萼长度

3

SepalWidthCm

花萼宽度

4

PetalLengthCm

花瓣长度

5

PetalWidthCm

花瓣宽度

6

Species

目标变量

种类  

Iris Setosa(山鸢尾)

Iris Versicolour(杂色鸢尾)

Iris Virginica(维吉尼亚鸢尾)

数据详情如下(部分展示):

image.png

3.数据预处理

真实数据中可能包含了大量的缺失值和噪音数据或人工录入错误导致有异常点存在,非常不利于算法模型的训练。数据清洗的结果是对各种脏数据进行对应方式的处理,得到标准的、干净的、连续的数据,提供给数据统计、数据挖掘等使用。数据预处理通常包含数据清洗、归约、聚合、转换、抽样等方式,数据预处理质量决定了后续数据分析挖掘及建模工作的精度和泛化价值。以下简要介绍数据预处理工作中主要的预处理方法:

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

image.png

关键代码:

image.png

3.2查看数据集摘要

使用Pandas工具的info()方法查看数据集的摘要信息:

image.png

从上图可以看到,总共有150条数据,6个数据项,所有数据中没有缺失值。

关键代码:

image.png

3.3数据描述性统计分析

使用Pandas工具的describe()方法查看数据描述性统计分析信息:

image.png

通过上图可以看到,Id列无意义不用分析,总数据量150条,每个数据项的平均值、标准差、最大值、最小值以及分位数值。其中SepalLengthCm平均值为5.84、标准差为0.83、最小值为4.30、最大值为7.90

关键代码:

image.png

4.探索性数据分析

4.1绘制特征与标签的小提琴图

seaborn工具的violinplot()方法进行绘图,图形化展示如下:

image.png

从上面图中可以看到,品种与每个特征之间的数据分布,例如:花萼长度特征,可以看到中位数、最大值、最小值等,品种为山鸢尾的中位数在5左右、品种为杂色鸢尾的中位数为5.5左右、品种为维吉尼亚鸢尾的中位数为6.3左右,以及针对每个品种 花萼长度数据的一个分布情况,其它特征的分析一样,就不一个一个分析

4.2绘制特征与标签的点图

seaborn工具的pointplot ()方法进行绘图,图形化展示如下:

image.png

从上面图中可以看到,品种与每个特征之间的数据分布,例如:花萼长度特征,可以看到平均值,品种为山鸢尾的平均值在5左右、品种为杂色鸢尾的平均值为5.8左右、品种为维吉尼亚鸢尾的平均值为6.5左右,就不一个一个分析

4.3生成各特征之间关系的矩阵图

seaborn工具的pairplot ()方法进行绘图,图形化展示如下:

image.png

从上图可以看到,花萼长度越小、花瓣宽度越窄 品种越偏向于山鸢尾;其它特征的分析以此类推。

4.4多维数据线性可视化

seaborn工具的andrews_curves()方法进行绘图,图形化展示如下:

image.png

通过上图可以清晰地看到每一个品种的鸢尾花数据的一个趋势,方便看到是否有异常的数据;本次可以看到无异常的数据。

4.5基于花萼和花瓣做线性回归可视化

seaborn工具的lmplot()方法进行绘图,图形化展示如下:

image.png

通过上图可以看到三种品种鸢尾花的花萼宽度与花萼长度的线性数据分布。

image.png

通过上图可以看到三种品种鸢尾花的花瓣宽度与花瓣长度的线性数据分布。

4.6相关性分析

用Pandas工具的corr()方法 matplotlib seaborn进行相关性分析,结果如下:

image.png

通过上图可以看到,数据项之间正值是正相关/负值是负相关,数值越大 相关性越强;花萼长度与花萼宽度不相关、花萼长度与花瓣长度、花瓣宽度相关性比较大。

5.特征工程

5.1 建立特征数据和标签数据

Species为标签数据,除Species之外的为特征数据。关键代码如下:

image.png

5.2标签数据数字化

image.png

通过上图可以看到,品种的数据类型是文本的,不符合建模的需要,所以使用LabelEncoder()方法把类型数据转化为数字,转化后的数据如下图:

image.png

关键代码:

image.png

5.3数据集拆分

训练集拆分,分为训练集和验证集,70%训练集和20%验证集。关键代码如下:

image.png

6.构建Adaboost分类模型

主要使用使用AdaBoostClassifier算法,用于目标分类。 

6.1建模

编号

模型名称

参数

1

Adaboost分类模型(默认基分类器)

n_estimators=50

2

learning_rate=1

3

random_state=0

4

Adaboost分类模型(SVC基分类器)

n_estimators=50

5

base_estimator=svc

6

learning_rate=1

7

random_state=0

关键代码如下:

image.png

7.模型评估

7.1评估指标及结果 

评估指标主要包括准确率、查准率、查全率、F1分值等等。

模型名称

指标名称

指标值

测试集

Adaboost分类模型(默认基分类器)

准确率

0.9667

Adaboost分类模型(SVC基分类器)

准确率

1.000

查准率

1.000

查全率

1.000

F1分值

1.000

从上表可以看出,SVC基分类器准确率为100%  F1分值为100%,以SVC为基分类器的Adaboost分类模型效果更好。

关键代码如下:

image.png  

7.2 查看是否过拟合

查看训练集和测试集的分数:

image.png

通过结果可以看到,训练集分数和测试集分数基本相当,所以没有出现过拟合现象。

关键代码:

image.png

7.3 分类报告

Adaboost分类模型分类报告:

image.png

从上图可以看到,分类类型为0的F1分值为1.00;分类类型为1的F1分值为1.00;分类类型为2的F1分值为1.00;整个模型的准确率为100%.

8.结论与展望

综上所述,本文采用了Adaboost分类模型,最终证明了我们提出的模型效果良好。准确率达到了100%,可用于日常生活中进行建模预测,以提高价值。

# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/1XkY9Vaja4G0GOFRdtl-n0w 
提取码:63h2
相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
10天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
26天前
|
监控 算法 安全
深度洞察内网监控电脑:基于Python的流量分析算法
在当今数字化环境中,内网监控电脑作为“守城卫士”,通过流量分析算法确保内网安全、稳定运行。基于Python的流量分析算法,利用`scapy`等工具捕获和解析数据包,提取关键信息,区分正常与异常流量。结合机器学习和可视化技术,进一步提升内网监控的精准性和效率,助力企业防范潜在威胁,保障业务顺畅。本文深入探讨了Python在内网监控中的应用,展示了其实战代码及未来发展方向。
|
27天前
|
数据采集 数据可视化 数据挖掘
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
245 66
金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
|
5天前
|
机器学习/深度学习 算法
扩散模型=进化算法!生物学大佬用数学揭示本质
在机器学习与生物学交叉领域,Tufts和Harvard大学研究人员揭示了扩散模型与进化算法的深刻联系。研究表明,扩散模型本质上是一种进化算法,通过逐步去噪生成数据点,类似于进化中的变异和选择机制。这一发现不仅在理论上具有重要意义,还提出了扩散进化方法,能够高效识别多解、处理高维复杂参数空间,并显著减少计算步骤,为图像生成、视频合成及神经网络优化等应用带来广泛潜力。论文地址:https://arxiv.org/pdf/2410.02543。
31 21
|
11天前
|
人工智能 算法 搜索推荐
单纯接入第三方模型就无需算法备案了么?
随着人工智能的发展,企业接入第三方模型提升业务能力的现象日益普遍,但算法备案问题引发诸多讨论。根据相关法规,无论使用自研或第三方模型,只要涉及向中国境内公众提供算法推荐服务,企业均需履行备案义务。这不仅因为服务性质未变,风险依然存在,也符合监管要求。备案内容涵盖模型基本信息、算法优化目标等,且需动态管理。未备案可能面临法律和运营风险。建议企业提前规划、合规管理和积极沟通,确保合法合规运营。
|
6天前
|
监控 算法 安全
内网桌面监控软件深度解析:基于 Python 实现的 K-Means 算法研究
内网桌面监控软件通过实时监测员工操作,保障企业信息安全并提升效率。本文深入探讨K-Means聚类算法在该软件中的应用,解析其原理与实现。K-Means通过迭代更新簇中心,将数据划分为K个簇类,适用于行为分析、异常检测、资源优化及安全威胁识别等场景。文中提供了Python代码示例,展示如何实现K-Means算法,并模拟内网监控数据进行聚类分析。
28 10
|
24天前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
50 17
|
28天前
|
存储 人工智能 算法
深度解密:员工飞单需要什么证据之Python算法洞察
员工飞单是企业运营中的隐性风险,严重侵蚀公司利润。为应对这一问题,精准搜集证据至关重要。本文探讨如何利用Python编程语言及其数据结构和算法,高效取证。通过创建Transaction类存储交易数据,使用列表管理订单信息,结合排序算法和正则表达式分析交易时间和聊天记录,帮助企业识别潜在的飞单行为。Python的强大功能使得从交易流水和沟通记录中提取关键证据变得更加系统化和高效,为企业维权提供有力支持。
|
27天前
|
存储 算法 安全
U 盘管控情境下 Python 二叉搜索树算法的深度剖析与探究
在信息技术高度发达的今天,数据安全至关重要。U盘作为常用的数据存储与传输工具,其管控尤为关键。本文探讨Python中的二叉搜索树算法在U盘管控中的应用,通过高效管理授权U盘信息,防止数据泄露,保障信息安全。二叉搜索树具有快速插入和查找的优势,适用于大量授权U盘的管理。尽管存在一些局限性,如树结构退化问题,但通过优化和改进,如采用自平衡树,可以有效提升U盘管控系统的性能和安全性。
26 3
|
4月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
142 3