当前位置: 首页 > ds >正文

2025年亚太中文赛B题第一版本超详细解题思路

亚太中文赛作为2025年暑期第一场数模竞赛,难度约为0.5-0.6个国赛。本文将为大家详细的带来B题超详细的解题思路。

其中B题数据均在网上可以找到公开来源,具体如下所示

技术参考网站

基于统计检验与多模型对心脏病数据的分析与预测

https://www.heywhale.com/mw/project/68287347e0112fbd79e75963

中风数据集疑似来源

https://www.heywhale.com/mw/dataset/648d46ae9de7b81463a94e2b/file

相关项目

https://www.heywhale.com/mw/dataset/648d46ae9de7b81463a94e2b/project

肝硬化数据来源

https://www.kaggle.com/datasets/abuchionwuegbusi/cirrhosis-patient-survival-prediction

数据介绍 1974 年至 1984 年期间,424 名 PBC 患者转诊至梅奥诊所,有资格参加测试 D-青霉胺药物的随机安慰剂对照试验。其中,最初的 312 名患者参加了试验,并且拥有大部分全面的数据。其余 112 名患者没有参加临床试验,但同意记录基本指标并接受生存跟踪。其中 6 名患者在诊断后很快就无法追踪,除了随机试验的 312 名患者外,还留下了其中 106 人的数据。

问题1:数据预处理与基础统计分析

问题描述:对疾病数据集进行预处理,并分析各个特征与疾病发生的关系。

进行数据清洗、缺失值填补、标准化等步骤,使用描述性统计与可视化工具(如直方图、散点图)分析不同特征与疾病发生的相关性,描述性统计分析:均值、中位数、方差、相关系数等。

问题一主要分为数据清洗与预处理基础统计分析、可视化分析。

1.1 数据清洗与预处理

缺失值处理:检查每个数据集中的缺失值,并决定如何处理这些缺失值。常见的处理方式包括删除含缺失值的行或用均值、中位数或众数填充缺失数据。

数据转换:将类别变量(如性别、是否患有高血压、是否吸烟等)转换为数值型变量,以便于机器学习模型使用。可以使用LabelEncoder 或 OneHotEncoder 进行转换。

· 类变量编码: 

二分类:Label Encoding (0,1)

多分类:One-Hot Encoding 或 Target Encoding

· 数值变量标准化:使用StandardScaler或MinMaxScaler

标准化与归一化:对于一些具有较大数值范围的特征(如年龄、血糖水平等),可以进行标准化或归一化处理,以提高模型训练的效果。

具体来讲我们需要首先进行数据清洗,(由于样本之间独立 互不相连,这里可以直接选择删除处理),具体如下所示

表格

指标名称

原因

处理

stroke.csv

gender

存在第三性别删除

bmi

存在缺失值

删除

smoking_status

存在12个21岁以下少年吸烟

heart.csv

RestingBP

静息血压[毫米汞柱]存在为0的个体

删除

cirrhosis.csv

Cholesterol

存在缺失值

删除

Copper

存在缺失值

删除

Trygli

cerides

存在缺失值

删除

后续模型中我们需要输入数据,而原始表格数据存在大量的文字信息,我们这里应该进行转码处理,即将文字信息进行量化处理,具体如下所示

表格

转码指标

转码前

转码后

stroke.csv

gender

1

0

ever_married

yes

1

no

0

work_type

children

1

Govt_job

2

Never_worked

3

Private

4

Self-employed

5

Residence_type

Urban

1

Rural

0

smoking_status

formerly smoked

1

never smoked

2

smokes

3

Unk0wn

4

表格

转码指标

转码前

转码后

cirrhosis.csv

N_Days

C

1

CL

2

D

3

3-peni1illamine

1

Pla1ebo

2

Sex

M

1

F

0

表格

转码指标

转码前

转码后

heart.csv

Sex

M

1

F

0

ChestPainType

ASY

0

TA

1

ATA

2

NAP

3

RestingECG

Nor1al

1

ST

2

LVH

3

ExerciseAngina

N

0

Y

1

ST_Slope

0lat

1

Dow0

2

3

3

我们后续基于处理后的数据进行了计算各数据集的均值、标准差、最小值、最大值、中位;统计三种疾病的患病率/死亡率;计算完整的相关系数矩阵;统计显著性检验(方差分析(ANOVA):检验连续变量对疾病的影响、卡方检验:检验分类变量与疾病的关联性)

【因数据预处理不同,数值上略有不同很合理】

患病率汇总:

中风患病率:4.26%

心脏病患病率:55.29%

肝硬化死亡率:40.22%

图片

图片

Stroke各特征与中风的相关性:

age: 0.232

hypertension: 0.143

heart_disease: 0.138

ever_married: 0.105

work_type: 0.080

Residence_type: 0.006

avg_glucose_level: 0.139

bmi: 0.042

smoking_status: -0.076

Heart各特征与心脏病的相关性:

Age: 0.282

Sex: 0.305

ChestPainType: -0.469

RestingBP: 0.118

Cholesterol: -0.231

FastingBS: 0.268

RestingECG: 0.062

MaxHR: -0.401

ExerciseAngina: 0.495

Oldpeak: 0.404

ST_Slope: -0.608

Cirrhosis各特征与死亡状态的相关性:

N_Days: -0.385

Drug: -0.036

Age: 0.225

Sex: 0.178

Ascites: 0.291

Hepatomegaly: 0.292

Spiders: 0.229

Edema: 0.261

Bilirubin: 0.427

Cholesterol: 0.190

Albumin: -0.271

Copper: 0.395

Alk_Phos: 0.277

SGOT: 0.265

Tryglicerides: 0.227

Platelets: -0.087

Prothrombin: 0.374

Stage: 0.321

问题2:疾病预测模型

问题描述:基于特征建立疾病预测模型,评估不同疾病(心脏病、中风、肝硬化)的患病概率。

可以使用分类算法(如逻辑回归、支持向量机、随机森林)来预测疾病的发生概率,并使用交叉验证和混淆矩阵评估模型的性能。

可能使用的模型:

逻辑回归:适合处理二分类问题。

支持向量机(SVM):在高维空间有效分类。

随机森林:集成学习方法,适用于处理复杂数据。

对于问题二,我们需要对不同的数据进行不同的处理方式,对连续变量进行标准化处理。并基于基于问题一的相关性分析结果选择重要特征。下面为了初步展示,我们实现了三种经典的机器学习算法:

逻辑回归:线性模型,解释性强,适合医学应用

支持向量机(SVM):非线性模型,适合小样本数据 

随机森林:集成学习,能处理特征交互,提供特征重要性

最终结果如下所示是
--- Stroke模型性能对比 ---

模型准确率精确率召回率特异性F1分数AUC

逻辑回归0.95720.00000.00000.99890.00000.8148

SVM0.95820.00000.00001.00000.00000.5000

随机森林0.95720.00000.00000.99890.00000.7842

--- Heart模型性能对比 ---

模型准确率精确率召回率特异性F1分数AUC

逻辑回归0.85250.84260.90100.79270.87080.9094

SVM0.77050.75210.87130.64630.80730.5000

随机森林0.81970.80910.88120.74390.84360.9021

--- Cirrhosis模型性能对比 ---

模型准确率精确率召回率特异性F1分数AUC

逻辑回归0.78180.81250.59090.90910.68420.9325

SVM0.78180.75000.68180.84850.71430.5000

随机森林0.80000.82350.63640.90910.71790.8960

图片

其他可以选择的模型,如下所示

图片

问题3:多疾病关联与综合风险评估

问题描述:构建一个综合风险评估模型,预测患者同时患有心脏病、中风和肝硬化的概率。

对于本问题

年龄(Age)

Stroke数据集:age 

Heart数据集:Age 

Cirrhosis数据集:Age 

特点:三个数据集都有,数值型,可直接对齐

性别(Sex/Gender)

Stroke数据集:gender (0=女, 1=男) 

Heart数据集:Sex (0=女, 1=男) 

Cirrhosis数据集:Sex (0=女, 1=男) 

特点:三个数据集都有,编码一致

胆固醇(Cholesterol)

Stroke数据集:❌ 没有此特征 

Heart数据集:✅ Cholesterol 

Cirrhosis数据集:✅ Cholesterol

使用年龄以及性别,还有利用医学等价性对齐的特征将Stroke数据集中胆固醇进行合理转换。

单疾病风险预测

心脏病预测:基于年龄+性别+胆固醇

肝硬化预测:基于年龄+性别+胆固醇

中风预测:基于年龄+性别(因为缺少胆固醇数据)

图片

多元回归:分析多个特征对患病风险的影响。

问题4:预防措施建议

八仙过海、各显神通,根据分析结果,提出针对心脏病、中风和肝硬化的预防建议。

http://www.xdnf.cn/news/15328.html

相关文章:

  • C++:非类型模板参数,模板特化以及模板的分离编译
  • Java大厂面试故事:谢飞机的互联网医疗系统技术面试(Spring Boot、MyBatis、Kafka、Spring Security、AI等)
  • FastAPI + SQLAlchemy (异步版)连接数据库时,对数据进行加密
  • 【字节跳动】数据挖掘面试题0016:解释AUC的定义,它解决了什么问题,优缺点是什么,并说出工业界如何计算AUC。
  • UE5多人MOBA+GAS 18、用对象池来设置小兵的队伍的生成,为小兵设置一个目标从己方出生点攻打对方出生点,优化小兵的血条UI
  • (补充)RS422
  • 【每日刷题】x 的平方根
  • 2D下的几何变换(C#实现,持续更新)
  • Elasticsearch混合搜索深度解析(下):执行机制与完整流程
  • 【AI News | 20250710】每日AI进展
  • 2025年DevSecOps工具全景图:安全左移时代的国产化突围
  • 深入探索Kafka Streams:企业级实时数据处理实践指南
  • 11. TCP 滑动窗口、拥塞控制是什么,有什么区别
  • 8-day06预训练模型
  • 揭示张量分析的强大力量:高级研究的基础-AI云计算拓展核心内容
  • Django老年健康问诊系统 计算机毕业设计源码32407
  • 从就绪到终止:操作系统进程状态转换指南
  • 将手工建模模型(fbx、obj)转换为3dtiles的免费工具!
  • 上半年净利预增66%-97%,高增长的赛力斯该咋看?
  • 聊一聊在 Spring Boot 项目中自定义 Validation 注解
  • 牛客小白月赛119
  • 进程状态 + 进程优先级切换调度-进程概念(5)
  • 【C++篇】二叉树进阶(上篇):二叉搜索树
  • Qt中QGraphicsView类应用解析:构建高效2D图形界面的核心技术
  • 数据结构-顺序表
  • 【C语言网络编程】HTTP 客户端请求(域名解析过程)
  • Oracle字符类型详解:VARCHAR、VARCHAR2与CHAR的区别
  • Qt数据库编程详解:SQLite实战指南
  • 解决Linux绑定失败地址已使用(端口被占用)的问题
  • 设计仿真 | MSC Apex Simufact实现铁路铰链轻量化与高精度增材制造