AdaBoost 乳腺癌数据挖掘

目录

1.数据集背景

2 集成学习方法

AdaBoost集成过程

3 个体学习器

结果评价

准确率以及混淆矩阵

评估集成学习模型的泛化学习能力

评估集成学习模型的多样性

结论

源码

1.数据集背景

乳腺癌数据集是一个非常经典的二元分类数据集,被广泛应用于机器学习和数据挖掘领域。该数据集包含了106个样本和30个特征,每个样本都有一个标签,表示该样本是否为癌症。标签值为0表示非癌症,标签值为1表示癌症。

这个数据集的特征包括了病人的年龄、肿瘤的大小、肿瘤的形状、肿瘤的位置、病人的淋巴结状态等信息。其中,一些特征是连续的数值型数据,例如病人的年龄和肿瘤的大小;而另一些特征则是二元或三元的分类数据,例如肿瘤的形状和位置。

乳腺癌数据集是一个非常实用的数据集,它可以帮助我们评估和比较机器学习算法的性能和准确性。由于该数据集相对较小,但是具有很多实用的特征,因此它可以很好地测试算法在处理多维数据时的效果和表现。同时,这个数据集也经常被用来作为示例数据集,用于介绍各种机器学习算法和技术的使用和实现方法。

在使用乳腺癌数据集时,需要注意以下几点。首先,由于该数据集是一个相对较小的数据集,因此在进行模型训练时,需要使用交叉验证等技术来评估模型的性能。其次,由于该数据集的特征包括了连续型和分类型两种类型的数据,因此在特征预处理时需要注意数据的规范化和编码方式。最后,由于该数据集的标签是二元分类问题,因此需要选择适合的评估指标来评估模型的性能,例如准确率、精确率、召回率等。

总之,乳腺癌数据集是一个非常实用的数据集,它可以帮助我们评估和比较机器学习算法的性能和准确性。在使用该数据集时,需要注意数据的预处理和特征选择等问题,以便得到更加准确和可靠的模型结果。

训练与测试的数据集大小为下图:

测试数据为:

2 集成学习方法

AdaBoost集成过程

AdaBoost算法是一种集成学习方法,其核心思想是通过组合多个弱分类器来构建一个性能更强的强分类器。它基于一个关键的观点:即使每个弱分类器的性能很差,但通过组合它们可以得到一个具有较高准确性的强分类器。

AdaBoost算法是一种非常著名的集成学习方法,它通过将多个弱分类器组合在一起,形成强分类器,从而提高分类性能。该算法的基本原理是将多个弱分类器组合在一起,使得整个集合的分类性能更好。

在AdaBoost算法中,每个新的弱分类器都会对之前分类错误的样本给予更大的权重,以便于该分类器能够更好地学习这些样本。具体来说,AdaBoost算法通过以下步骤来实现:

  1. 初始化样本权重分布
    • 对于每个样本,赋予相同的权重,即Wi=1/N(N为样本总数)
  2. 训练弱分类器
    • 根据样本的权重分布训练一个弱分类器,分类器预测正确的样本权重将减小,错误则增加,用EL(j)表示第j个弱分类器在训练集上的错误率,则:
      EL(j)=∑Di*Ii/Zj
      (Zj为规范化因子,D为样本权重分布,Ii为样本i是否被正确分类)
  3. 计算分类器权重
    • 计算第j个弱分类器的权重W(j):W(j)=[(1-EL(j))]/∑(1-EL(i))
  4. 组合弱分类器
    • 将每个弱分类器的输出乘以它的权重,然后求和得到最终的预测结果。
  5. 更新样本权重分布
    • 对于每个样本,如果被正确分类,则降低其权重;如果错误分类,则增加其权重。
  6. 返回步骤2,直到弱分类器的数量达到预设值或无法进一步降低错误率为止。

AdaBoost算法具有自适应能力,能够根据样本的错误率自动调整弱分类器的权重和组合权重。同时,AdaBoost算法还具有很强的鲁棒性,即使某个弱分类器出现较大的错误率,也不会对整个集合的分类性能产生太大的影响。因此,AdaBoost算法在很多领域都得到了广泛的应用。

图1 AdaBoost集成过程

3 个体学习器

个体学习器是指基于单个模型进行学习的算法,如决策树、支持向量机、逻辑回归等。在机器学习中,个体学习器通常作为构建强分类器的起点,通过将多个个体学习器组合在一起,形成集体学习器,从而提高分类性能。

在本次大作业中,我们采用单层决策树作为个体学习器构建弱分类器。决策树是一种常见的机器学习算法,它通过将数据集划分成若干个分支,从而实现对数据的分类。在决策树中,每个节点代表一个特征或属性,每个分支代表一个决策规则,最终的分类结果由树的根节点到叶节点的路径决定。在构建决策树时,通常采用贪婪搜索算法进行特征选择和决策树的剪枝,以避免过拟合和欠拟合问题。这种方法在实际应用中被广泛使用,特别是在处理大规模数据和复杂特征的场景下,展现出了良好的效果和可扩展性

结果评价

选择ROC曲线作为评价AdaBoost分类效果的指标,具体结果如下所示:

图2 ROC评价效果

ROC是反映敏感性和特异性连续变量的综合指标。以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。这也证明了AdaBoost分类效果较好。

准确率以及混淆矩阵

评估集成学习模型的泛化学习能力

评估集成学习模型的泛化学习能力是十分重要的,因为泛化能力决定了模型在未知数据上的表现。为了评估集成学习模型的泛化能力,我们可以采用以下方法:

验证集评估:将数据集划分为训练集、验证集和测试集,其中验证集用于调整模型参数和选择最佳的弱分类器组合,测试集用于评估模型的泛化能力。

交叉验证:通过将数据集划分为多个子集,依次将每个子集作为测试集,其余子集作为训练集进行训练和测试,最后取多个测试结果的平均值作为最终评估结果。

误差分析:分析模型的误差分布,检查误差的主要来源,从而评估模型在未知数据上的泛化能力。

鲁棒性分析:分析模型对噪声数据和异常值的鲁棒性,从而评估模型在未知数据上的泛化能力。

评估集成学习模型的多样性

评估集成学习模型的多样性是非常重要的,因为模型的多样性可以增强其对数据的适应能力,从而降低过拟合的风险。为了评估集成学习模型的多样性,我们可以采用以下方法:

1. 观察弱分类器的结构:检查每个弱分类器的结构是否相似,如果相似度很高,则说明模型缺乏多样性。

2. 计算弱分类器的输出:观察弱分类器的输出是否相似,如果相似度很高,则说明模型缺乏多样性。

3. 采用多样性度量:可以计算不同弱分类器之间的相似度或差异度,从而评估模型的多样性。

4. 观察模型的预测结果:对于测试集中的每个样本,观察模型的所有弱分类器的预测结果,如果预测结果相似,则说明模型缺乏多样性。

结论

所设计的集成学习模型具有以下优点:

提高了分类性能:通过将多个弱分类器组合在一起,形成强分类器,可以显著提高分类性能。

增强了鲁棒性:集成学习模型可以降低对单个分类器的要求,即使某个分类器出现较大的错误率,也不会对整个模型的分类性能产生太大的影响。

实现了自适应学习:AdaBoost算法能够根据样本的错误率自动调整弱分类器的权重和组合权重,实现了自适应学习。

然而,该模型也存在以下缺点:

易于过拟合:由于AdaBoost算法将每个弱分类器进行加权组合,容易导致过拟合问题。

对噪声数据敏感:如果数据集中存在噪声数据,AdaBoost算法可能会将这些噪声数据赋予较大的权重,从而影响整个模型的分类性能。

为了解决这些缺点,可以采取以下思路和解决方案:

降低模型复杂度:通过减少弱分类器的数量或降低每个弱分类器的复杂度,可以降低整个模型的复杂度,从而减少过拟合问题的发生。

加入正则化项:在训练过程中加入正则化项,可以限制模型的复杂度,从而减少过拟合问题的发生。

处理噪声数据:可以通过一些方法对噪声数据进行预处理,例如去除噪声数据或对其进行归一化处理,以减少其对整个模型分类性能的影响。

源码

#

 导入需要的库





from sklearn.datasets import load_breast_cancer  

from sklearn.model_selection import train_test_split  

from sklearn.tree import DecisionTreeClassifier  

from sklearn.ensemble import AdaBoostClassifier  

from sklearn.metrics import roc_curve, accuracy_score, confusion_matrix ,auc

import matplotlib.pyplot as plt  

  

# 加载数据集  

data = load_breast_cancer()  

X = data.data  

y = data.target  

  

# 划分训练集和测试集  

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  

  

# 使用决策树构建个体学习器  

clf = DecisionTreeClassifier()  

clf.fit(X_train, y_train)  

  

# 使用AdaBoost利用决策树构建集体学习器  

ada = AdaBoostClassifier(base_estimator=clf, n_estimators=100, random_state=42)  

ada.fit(X_train, y_train)  



print("X_train shape is:  ",X_train.shape)

print("X_test shape is:  ",X_test.shape)

print("X_test  is:  ",X_test)





# 预测测试集结果  

y_pred = ada.predict(X_test)  

  

# 计算ROC曲线  

fpr, tpr, thresholds = roc_curve(y_test, y_pred)  

roc_auc = auc(fpr, tpr)  

  

# 输出ROC曲线图  

plt.figure()  

plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)  

plt.plot([0, 1], [0, 1], 'k--')  

plt.xlim([0.0, 1.0])  

plt.ylim([0.0, 1.05])  

plt.xlabel('False Positive Rate')  

plt.ylabel('True Positive Rate')  

plt.title('Receiver Operating Characteristic')  

plt.legend(loc="lower right")  

plt.show()  

  

# 计算准确率  

accuracy = accuracy_score(y_test, y_pred)  

print('Accuracy: {:.2f}%'.format(accuracy * 100))  

  

# 计算混淆矩阵  

cm = confusion_matrix(y_test, y_pred)  

print('Confusion Matrix:')  

print(cm)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java线程基础

一、相关概念 1、程序 为完成任务,用某种语言编写的一组指令的集合。 2、进程 进程是指运行中的程序。 进程是程序的依次执行过程,或是正在运行的一个程序,是一个动态过程:有自身产生、存在和消亡的过程。 3、线程 线程是由进程创…

拍视频麦克风什么牌子好?户外无线麦克风哪个牌子好,看本期文章

​无线领夹麦克风,作为现代音频技术的重要代表,已经广泛应用于各种场合。它不仅能提高演讲者的声音质量,还能增加演讲的互动性和生动性。然而,面对市场上众多的无线领夹麦克风产品,如何选择一款适合自己的设备成为了一…

产教协同|暴雨AI算力赋能传媒实践教学

近日,“第七届传媒实践教学创新研讨会暨中国高校影视学会实验教学专业委员会年会”在美丽的山城重庆成功举办。本次大会以“拥抱AI,融合共生”为主题,吸引了来自全国200多所高校、30多家企业以及700多位大视听实践教学产学研用各界专家、学者…

react跨组件通信Context

案例&#xff1a;现在有个父-子-孙组件 需要进行组件通信 import { useState } from "react"; // 创建上下文 const CountContext React.createContext();//子组件 const SonComponent (props) > {return (<div><h2>子组件</h2><Grandson…

便携式应急气象站:应急气象监测装备

TH-BQX5便携式应急气象站&#xff0c;作为现代气象监测的重要装备&#xff0c;以其独特的便携性、高效性和灵活性&#xff0c;在应急气象监测领域发挥着至关重要的作用。这类气象站不仅为灾害预警、环境保护、农业生产等多个领域提供了实时、准确的气象数据&#xff0c;还在突发…

记录一次Redisson使用synchronized和分布式锁不生效的原因

最近在开发的过程中&#xff0c;遇到了一个并发场景&#xff0c;用户进行方案复制的时候&#xff0c;当快速点击两次操作的时候&#xff0c;出现了复制方案重名的情况&#xff0c;实际上是复制方案的方案名称&#xff0c;是由后端根据数据库已有的方案名称和当前要复制的方案名…

Hugging face win使用教程(二)

1. 将环境迁移到win&#xff0c;可以直接下载修改好的cuda环境https://download.csdn.net/download/liangjiubujiu/89368302?spm1001.2014.3001.5503 2. 修改hugging face的缓存路径 3. 重启pycharm 4. 编写测试代码&#xff0c;注意可能由于网络链接问题&#xff0c;需要关…

Parasoft C++Test软件静态分析操作指南_编码规范/标准检查

系列文章目录 Parasoft CTest软件安装指南 Parasoft CTest软件静态分析操作指南_编码规范/标准检查 Parasoft CTest软件静态分析操作指南_软件质量度量 Parasoft CTest软件静态分析_自动提取静态分析数据生成文档 Parasoft CTest软件单元测试_操作指南 Parasoft CTest软件单元…

嵌入式进阶——OLED显示器(SPI)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 SPI协议原理图字库芯片中文显示屏原理API的使用 SPI协议 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种同步串行…

嵌入式要卷成下一个Java了吗?

嵌入式要卷成下一个Java了吗&#xff1f; 根据我十年的嵌入式开发经验&#xff0c;嵌入式开发的工资水平相对 Java 较低。不过&#xff0c;嵌入式开发岗位主要集中在第二产业&#xff0c;尤其是电器、电气、机械汽车、航空航天等行业的“智能制造”领域。这些行业属于重资产行…

JWT身份验证相关安全问题

前言&#xff1a;工作中需要基于框架开发一个贴近实际的应用&#xff0c;找到一款比较合适的cms框架&#xff0c;其中正好用到的就是jwt做身份信息验证&#xff0c;也记录一下学习jwt相关的安全问题过程。 JWT介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行…

线上自由DIY预约小程序源码系统 自由DIY你的界面 带完整的的安装代码包以及搭建教程

系统概述 在当今数字化时代&#xff0c;移动应用成为人们生活和工作中不可或缺的一部分。预约小程序作为一种便捷的工具&#xff0c;为用户提供了高效的预约服务体验。而线上自由 DIY 预约小程序源码系统则为开发者和企业提供了更大的自由度和创造力&#xff0c;让他们能够根据…

Redis篇 String的基本命令

String基本命令 一.setnx,setex,psetex二. 增加删除命令三.append,setrange,getrange,strlen命令1.append2.setrange3.strlen4.getrange 四.String的内部编码方式 一.setnx,setex,psetex setex和psetex设置过期时间 setex设置的过期时间是秒级 psetex设置的过期时间是毫秒级 二…

11.任务状态查询API函数总结

一、任务相关 API 函数预览 二、任务相关 API 函数详解 1. 函数 uxTaskPriorityGet() 此函数用于获取指定任务的任务优先级&#xff0c;若使用此函数&#xff0c;需在 FreeRTOSConfig.h 文件中设 置配置项 INCLUDE_uxTaskPriorityGet 为 1&#xff0c;此函数的函数原型如下所示…

我和jetson-Nano的故事(12)——安装pytorch 以及 torchvision

在jetson nano中安装Anaconda、pytorch 以及 torchvision 1.Pytorch下载安装2.Torchvision安装 1.Pytorch下载安装 首先登录英伟达官网下载Pytorch安装包&#xff0c;这里以PyTorch v1.10.0为例 安装依赖库 sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev liba…

HNU-人工智能-2024期末考试回忆

前言 后知后觉&#xff0c;似乎是别的专业的往年试题拿来复用&#xff0c;我没刷到&#xff0c;比较吃亏。 最后一题把数据改的很恶心&#xff0c;让我cosplay成GPU&#xff0c;算3个5*5的卷积核&#xff0c;简直恶心。根本没时间算完。 整场考试体验还挺差的。主要是老师缝…

FreeRTOS【7】队列使用

1.开发背景 操作系统提供了多线程并行的操作&#xff0c;为了方便代码的维护&#xff0c;各个线程都分配了专用的内存并处理对应的内容。但是线程间也是需要协助操作的&#xff0c;例如一个主线程接收信息&#xff0c;会把接收的信息并发到其他线程&#xff0c;即主线程不阻塞&…

helm离线安装

目录 概述实践 概述 centos 7.x 离线安装 helm 3.14.4 版本 实践 离线包资源下载地址 github [roothadoop01 ~]# tar -xvf helm-v3.14.4-linux-amd64.tar.gz linux-amd64/ linux-amd64/README.md linux-amd64/LICENSE linux-amd64/helm [roothadoop01 ~]# mv ./linux-amd…

Deepin Linux 深度 V23 beige 官方源及换镜像源方法。

Deepin Linux 深度 V23 英文版本号&#xff1a;beige 谁起的烂名字。。。。。。 1. 打开文件管理器&#xff0c;在apt文件夹点右键&#xff08;以管理员身份打开&#xff09;&#xff0c; 2. 输入你的登录密码&#xff0c;以便打开文件夹&#xff08;管理员权限&#xff09;。…

【会议征稿,JPCS出版】2024年航空航天与力学国际学术会议(ICAM 2024)

2024年航空航天与力学国际学术会议&#xff08;ICAM 2024&#xff09;将于2024年7月12-14日在中国沈阳举办。会议由东北大学机械工程与自动化学院主办&#xff0c;吉林大学机械与航空航天工程学院承办&#xff0c;大连理工大学、沈阳航空航天大学、沈阳建筑大学、沈阳工业大学、…