Python数据分析-乳腺癌诊断分析预测

news2024/9/23 16:03:51

一、研究背景

乳腺癌是全球女性中最常见的癌症之一,发病率和死亡率都处于较高水平。据世界卫生组织(WHO)统计,乳腺癌每年造成数百万女性的死亡,并且其发病率在许多国家呈上升趋势。乳腺癌的早期诊断对于提高患者的生存率至关重要,因为早期发现和治疗可以显著降低乳腺癌的死亡率。然而,乳腺癌的早期症状常常不明显,这使得及时诊断变得困难。

近年来,随着医学影像技术和生物标志物检测技术的进步,乳腺癌的诊断手段得到了极大丰富和改进。传统的诊断方法包括体检、乳房X线摄影(乳腺钼靶)、超声检查和磁共振成像(MRI)等。这些方法尽管在临床上得到了广泛应用,但仍存在一定的局限性,如假阳性和假阴性率较高、辐射风险和费用较高等。因此,寻找更加精准、无创且高效的诊断方法成为研究的热点。

人工智能(AI)和机器学习技术在医学诊断中的应用日益广泛,特别是在影像识别和病理诊断方面展现出了巨大的潜力。基于机器学习的乳腺癌诊断系统可以通过训练大量的医学影像和病理数据,自动识别和分类乳腺癌病变,辅助医生进行诊断,提高诊断的准确性和效率。

本研究旨在利用乳腺癌诊断数据集,通过机器学习技术构建高效的乳腺癌诊断模型,评估不同算法的性能,并探讨其在临床中的应用前景。希望通过本研究,为乳腺癌的早期诊断提供新的思路和方法,最终提高患者的生存率和生活质量。

二、研究意义

  1. 提高诊断准确性:通过构建和优化机器学习模型,可以提高乳腺癌诊断的准确性,减少误诊和漏诊,提升患者的治愈率。

  2. 降低诊断成本:相较于传统的诊断手段,基于人工智能的诊断方法可以在降低医疗成本的同时,提高诊断效率,使更多患者能够及时获得诊断和治疗。

  3. 推动医学技术进步:本研究在机器学习技术与医学诊断的结合方面进行探索,为未来智能医疗的发展提供科学依据和技术支持,推动医学技术的进步和创新。

  4. 提高公众健康意识:通过本研究,可以提高公众对乳腺癌早期诊断和预防的认识,促进早期筛查和定期体检,早发现早治疗,降低乳腺癌的发病率和死亡率。

三、实证分析

代码和数据

首先导入数据分析需要的包

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
from scipy import stats

plt.style.use('ggplot')
# 读取数据
cancer_data = pd.read_csv("Breast_cancer_data.csv")
cancer_data.head()

该数据集提供了从乳腺癌患者中提取的特征的全面集合,旨在促进预测建模和分析。它包括平均半径、纹理、周长、面积、平滑度和其他诊断属性等测量值。

查看数据类型

cancer_data.info()

 

对数据集做描述性统计分析

检查样本平衡性

print(cancer_data.diagnosis.value_counts())
sns.countplot(data = cancer_data, x= cancer_data['diagnosis'])

 

发下没有特别大的差别

接下来绘制特征相关系数热力图

再次查看数据后五条

cancer_data.tail()

 

 接下来可视化数据特征

fig, axes = plt.subplots(1, 3, figsize=(15, 6), sharey=True)
sns.histplot(cancer_data, ax=axes[0], x="mean_radius", kde=True, color='r')
sns.histplot(cancer_data, ax=axes[1], x="mean_smoothness", kde=True, color='b')
sns.histplot(cancer_data, ax=axes[2], x="mean_texture", kde=True, color='y')

 再次检查一下离群值

接下来画一下成对图,成对图是一种用于探索和可视化数据集中多个变量之间关系的图表。它通过展示变量两两之间的关系图,帮助分析数据的特征、相关性以及分布情况。 

sns.pairplot(data = cancer_data, hue = 'diagnosis')

 接下来开始机器学习,首先对数据标准化

划分训练集和测试集

x_train, x_test, y_train, y_test = train_test_split(x,y,train_size=.8, random_state=42) 

 首先是KNN模型

error_rate = []
for i in range(1,40):
    knn = KNeighborsClassifier(n_neighbors=i)
    knn.fit(x_train,y_train)
    pred_i = knn.predict(x_test)
    error_rate.append(np.mean(pred_i != y_test))

plt.figure(figsize=(10,6))
plt.plot(range(1,40),error_rate,color='blue', linestyle='dashed', 
         marker='o',markerfacecolor='red', markersize=10)
plt.title('Error Rate vs. K Value')
plt.xlabel('K')
plt.ylabel('Error Rate')
print("Minimum error:-",min(error_rate),"at K =",error_rate.index(min(error_rate)))

 可以发现

model = KNeighborsClassifier(n_neighbors=11)
model.fit(x_train, y_train)

train_pred = model.predict(x_train)
test_pred = model.predict(x_test)

train_acc = accuracy_score(y_train, train_pred)
test_acc = accuracy_score(y_test, test_pred)

Gaussian 模型

model = GaussianNB()
model.fit(x_train, y_train)

train_pred = model.predict(x_train)
test_pred = model.predict(x_test)

train_acc = accuracy_score(y_train, train_pred)
test_acc = accuracy_score(y_test, test_pred)

Gboost模型

model = GradientBoostingClassifier(n_estimators=40, max_leaf_nodes=8)
model.fit(x_train, y_train)

train_pred = model.predict(x_train)
test_pred = model.predict(x_test)

train_acc = accuracy_score(y_train, train_pred)
test_acc = accuracy_score(y_test, test_pred)

四、结论

本研究利用乳腺癌诊断数据集,采用多种机器学习算法(如决策树、随机森林、支持向量机、K-近邻算法等)构建了乳腺癌诊断模型。通过对模型的训练和测试,评估了各模型的性能,并对结果进行了详细分析。研究结果表明,基于机器学习的乳腺癌诊断模型在准确性、敏感性和特异性方面均表现优异,特别是在早期乳腺癌的识别上具有显著优势。随机森林和支持向量机等模型表现出较高的诊断准确性和鲁棒性,能够有效辅助临床医生进行乳腺癌的诊断。此外,本研究还探讨了数据预处理、特征选择和模型优化等关键步骤对诊断结果的影响,提出了优化方案和改进建议。研究表明,通过合理的数据处理和特征选择,可以进一步提高模型的诊断性能。

总的来说,本研究证明了机器学习技术在乳腺癌诊断中的应用潜力,为智能医疗的发展提供了新的思路和方法。未来可以结合更多的临床数据和多模态数据,进一步优化诊断模型,推动其在实际临床中的应用和推广,从而提高乳腺癌患者的生存率和生活质量。

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

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

相关文章

气膜仓储与传统仓储的成本优势对比—轻空间

随着物流和仓储需求的不断增长,企业对仓储设施的要求也日益提高。传统仓储设施虽然具有一定的优势,但在建设和运营成本上往往较高。近年来,气膜仓储作为一种新型仓储方式,以其独特的优势逐渐受到市场青睐。轻空间将详细探讨气膜仓…

小程序创建与项目初始化(构建 npm + 集成 Sass)

一、打开微信开发者工具 确认 左侧导航栏是否选中的 小程序点击 【】创建小程序 二、创建小程序 三、初始化 清空 app.wxss、app.js 去掉 rendererOptions 和 componentFramework 不需要最新的搜索引擎 留下以下文件 四、自定义构建 npm 集成 Sass 首先 先把小程序源…

如何使用Python正则表达式解析多行文本

使用 Python 的正则表达式来解析多行文本通常涉及到使用多行模式(re.MULTILINE)和 re.DOTALL 标志,以及适当的正则表达式模式来匹配你想要提取或处理的文本块。以下是一个简单的示例,展示了如何处理多行文本: 1、问题背…

maven编码报错

maven 编译的时候编码报错: classworlds For input string: "ㄻ孛孛"报错原因: maven 编码使用的是UTF-16 ,系统中使用UFT-8 解决办法: 如下设置为UTF-8

SSM社区物业管理系统-计算机毕业设计源码91276

摘要 随着城市化进程的加快,居民社区的规模和数量不断增长,传统的人工管理方式已经无法满足管理需求。借助信息技术和互联网应用,社区物业管理系统可以实现物业管理信息的集中化、自动化和便捷化,提供全方位的管理和服务支持。社区…

PostgreSQL17索引优化之支持并行创建BRIN索引

PostgreSQL17索引优化之支持并行创建BRIN索引 最近连续写了几篇关于PostgreSQL17优化器改进的文章,其实感觉还是挺有压力的。对于原理性的知识点,一方面是对这些新功能也不熟悉,为了尽可能对于知识点表述或总结做到准确,因此需要…

Linux之文件fd

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 C进阶​ ​​​​算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.文件内容的回顾 二.提炼一下对文件的…

狂飙的鸭子,哪里跑!安定的力量(深度好文)——早读(逆天打工人爬取热门微信文章解读)

容我也来卖个小聪明,学习洞见,深度好文 引言Python 代码第一篇 洞见 安定的力量(深度好文)第二篇结尾 引言 老刺激了 骑着自行车在路上狂摇 刚刚好赶上打卡时间 早上一切很平和 听书 吃绿豆饼茶 做早餐 准点一天的排泄 老天估计…

快手矩阵系统:一键发布,多平台自动文案生成

在当今信息爆炸的时代,自媒体平台的崛起为用户提供了广阔的展示舞台。然而,对于内容创作者来说,如何高效地在多个平台上发布内容,同时保持文案的吸引力和独特性,一直是一个不小的挑战。幸运的是,随着技术的…

基于xinference推理引擎 + glm4-9b-chat模型的本地化部署探索

【备注】从langchain-chatchat v0.3开始,所有的模型配置,均由推理模型(如:xinference )进行加载和启动。 xinference 中配置并启动模型 1、查看支持的模型 xinference registrations --model-type LLM 2、执行tran…

相约 TDBC丨拓数派将亮相 2024 可信数据库发展大会!

2024 年,我国数据库正处于蓬勃发展期和关键应用期,在人工智能迅猛发展和数据要素市场化建设的浪潮下,为进一步推动全球数据库产业进步,2024 可信数据库发展大会将于 2024 年 7 月 16-17 日,在北京朝阳悠唐皇冠假日酒店…

计网ip层重要面经总结

文章目录 127.0.0.1, localhost, 0.0.0.0有什么不同?ipv6还需要NAT吗?DNS查询服务器的基本流程浏览器输入一个URL到显示器显示的过程PING是怎么工作的?ipv4和ipv6究竟有哪些区别?什么是跨域,什么情况下会发生跨域问题&#xff1f…

前端面试题42(MVVM与MVC区别)

MVVM(Model-View-ViewModel)和MVC(Model-View-Controller)都是软件架构模式,主要用于简化应用程序开发中的复杂性,尤其是在用户界面和数据管理方面。尽管它们有一些相似之处,但在设计理念和实施…

GD32MCU最小系统构成条件

大家是否有这个疑惑:大学课程学习51的时候,老师告诉我们51的最小系统构成?那么进入32位单片机时代,gd32最小系统构成又是怎么样的呢? 1.供电电路 需要确保供电的电压电流稳定,以东方红开发版为例&#xff…

基于深度学习的行人重识别

目录 1、基于表征学习的ReID方法 2、基于度量学习的ReID方法 (1)对比损失(Contrastive loss) (2)三元组损失(Triplet loss) (3) 四元组损失(Quadruplet loss) (4)难样本采样三元…

React+TS前台项目实战(三十)-- 首页构建之基于react-query和性能hook实现全页面数据渲染

文章目录 前言一、首页源码详细注释说明技术分析1. 页面功能分析2. 代码详细注释 二、效果展示总结 前言 前三篇文章详细介绍了首页的响应式布局,采用关注点分离进行模块拆解,现在只需按需引入模块,页面更加简洁,代码的维护性得到…

【鸿蒙学习笔记】关系型数据库概述

目录标题 关系型数据库的运行机制样例代码共通方法 DBUtilsIndex 代码效果 关系型数据库的运行机制 1、 关系型数据库对应用提供通用的操作接口,底层使用SQLite作为持久化存储引擎,支持SQLite具有的数据库特性,包括但不限于事务、索引、视图…

MongoDB教程(一):Linux系统安装mongoDB详细教程

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、Ubuntu…

【单片机毕业设计选题24059】-太阳能嵌入式智能充电系统研究

系统功能: 系统由太阳能电池板提供电源, 系统上电后显示“欢迎使用智能充电系统请稍后”, 两秒钟后进入主页面显示。 第一行显示太阳能电池板输入的电压值 第二行显示系统输出的电压值 第三行显示采集到的太阳能电池板温度 第四行显示设置的太阳能…

【Linux杂货铺】1.环境变量

1.环境变量基本概念 环境变量( environment variables )一般是指在操作系统中用来指定操作系统运行环境的一些参数。如:我们在编写 C / C +代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪…