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 ,aucimport 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)

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

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

相关文章

LSTM长短时记忆网络:推导与实现(pytorch)

LSTM长短时记忆网络:推导与实现(pytorch) 背景推导遗忘门输入门输出门 LSTM的改进:GRU实现 背景 人类不会每秒钟都从头开始思考。当你阅读这篇文章时,你会根据你对以前单词的理解来理解每个单词。你不会把所有东西都扔…

2024年6月1日(星期六)骑行禹都甸

2024年6月1日 (星期六)骑行禹都甸(韭葱花),早8:30到9:00,昆明氧气厂门口集合,9:30准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:昆明氧气厂门口集合 ,…

2024 GIAC 全球互联网架构大会:拓数派向量数据库 PieCloudVector 架构设计与案例实践

5月24-25日,msup 和高可用架构联合举办了第11届 GIAC 全球互联网架构大会。会议聚焦“共话AI技术的最新进展、架构实践和未来趋势”主题,邀请了 100 余位行业内的领军人物和革新者,分享”Agent/RAG 技术、云原生、基座大模型“等多个热门技术…

浏览器修改后端返回值

模拟接口响应和网页内容 通过本地覆盖可以模拟接口返回值和响应头,无需 mock 数据工具,比如(Requestly),无需等待后端支持,快速复现在一些数据下的 BUG 等。在 DevTools 可以直接修改你想要的 Fetch/XHR 接…

将四种算法的预测结果绘制在一张图中

​ 声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 之前的一期推文中,我们推出了…

NoSQL是什么?NoSQL数据库存在SQL注入攻击?

一、NoSQL是什么? NoSQL(Not Only SQL)是一种非关系型数据库的概念。与传统的关系型数据库不同,NoSQL数据库使用不同的数据模型来存储和检索数据。NOSQL数据库通常更适合处理大规模的非结构化和半结构化数据,且能够…

CPU对代码执行效率的优化,CPU的缓存、指令重排序

目录 一、CPU对代码执行效率的优化 1. 指令流水线(Instruction Pipelining) 2. 超标量架构(Superscalar Architecture) 3. 动态指令重排序(Dynamic Instruction Reordering) 4. 分支预测(…

【RuoYi】使用代码生成器完成CRUD操作

一、前言 前面,介绍了如何下载和启动我们的RuoYi框架。为了让小伙伴们认识到ruoyi的强大,那么这篇博客就介绍一下如何使用ruoyi的代码生成器,自动生成前端页面以及后端的对应数据库表的CRUD操作!!!真的很强…

LWIP_TCP 协议

目录 1 TCP 协议简介 1.1 TCP 协议简介 1.2 TCP 的建立连接 1.3 TCP 终止连接 1.4 TCP 报文结构 1.5 lwIP 的 TCP 报文首部数据结构 1.6 lwIP 的 TCP 连接状态图 1 TCP 协议简介 1.1 TCP 协议简介 TCP(Transmission Control Protocol 传输控制协议&#xff0…

MySQL实战行转列(或称为PIVOT)实战sales的表记录了不同产品在不同月份的销售情况,进行输出

有一个sales的表,它记录了不同产品在不同月份的销售情况: productJanuaryFebruaryMarchProduct AJanuary10Product AFebruary20Product BJanuary5Product BFebruary15Product CJanuary8Product CFebruary12 客户需求展示为如下的样子: pro…

斯坦福报告解读4:图解有趣的推理基准(中)

《人工智能指数报告》由斯坦福大学、AI指数指导委员会及业内众多大佬Raymond Perrault、Erik Brynjolfsson 、James Manyika等人员和组织合著,该报告已被公认为最权威、最具信誉人工智能数据与洞察来源之一。 2024年版《人工智能指数报告》是迄今为止最为详尽的一份…

linux下常用的终端命令

文章目录 1. MV移动文件、重命名文件1.1 移动文件:mv [选项] 源文件或目录 目标文件或目录1.2 文件重命名 2. 查找:文件,内容,统计文件2.1 find查找文件2.2 Linux查找文件内容 3. 查看当前用户4. linux修改文件所属用户和组5. 复制…

Token验证流程、代码示例、优缺点和安全策略,一文告诉你。

Token和Session都是用于身份验证和授权的机制,而且Token渐渐成为主流,有不少小伙伴对token的认识不全,这里给大家分享下。 一、什么是Token Token是一种用于身份验证和授权的令牌,通常用于在客户端和服务器之间进行安全的通信。…

工程文档CAD转换必备!快速将 DWG 转换到 PNG ~

Aspose.CAD 是一个独立的类库,以加强Java应用程序处理和渲染CAD图纸,而不需要AutoCAD或任何其他渲染工作流程。该CAD类库允许将DWG, DWT, DWF, DWFX, IFC, PLT, DGN, OBJ, STL, IGES, CFF2文件、布局和图层高质量地转换为PDF和光栅图像格式。 Aspose AP…

gradio image 类型

3种类型,默认是 numpy.array numpy.array PIL.Image str file path. 互相转换 # 从路径到 numpy.ndarray import cv2 image_mask cv2.imread(imagePath) print(type(image_mask))# 从路径到 PIL.IMAGE from PIL import Image image_maskImage.open(imagePath) pri…

【Chrono Engine学习总结】6-创建自定义场景-6.1-3D场景获取

由于Chrono的官方教程在一些细节方面解释的并不清楚,自己做了一些尝试,做学习总结。 Chrono可以导入自定义的三维模型,所以想自己搭建一个3D仿真环境。过程中遇到了一些问题,记录与整理。 1、3D环境的创建方法 Chrono的Irrlich…

Llama 3-V: 比GPT4-V小100倍的SOTA

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模…

ECP5701 做为PD受电端取电sink芯片,可广泛应用在带锂电的终端设备上,例如电动工具,照明灯具,音箱设备,摄影设备,筋膜枪小家电等

随着科技的发展,USB-C接口逐渐成为手机、平板电脑、小型家电等新型电子设备的主流接口,相较于过去繁杂的传统接口,USB-C不仅简化了消费者的使用体验,也降低了制造商的生产成本。特别是随着PD协议的普及,Type-C接口因其…

设计以容错:应对失败的12种关键设计思想

"Design for Failure" 这一说法在产品设计、软件开发和系统架构中并不常见,因为它通常与追求成功和可靠性的目标相悖。然而,如果我们从另一个角度来理解它,即“设计以应对失败”或“设计以容错”,那么以下是12种常见的设…