机器学习在脑卒中预测中的应用:不平衡数据集处理方法详解
机器学习在脑卒中预测中的应用:不平衡数据集处理方法详解
目录
-
引言
- 脑卒中的全球影响
- 机器学习在医疗预测中的挑战
- 类别不平衡问题的核心痛点
-
数据预处理与特征选择
- 数据来源与清洗
- 缺失值处理方法
- 类别特征编码
- 特征选择技术
-
处理类别不平衡的四大方法
- SMOTE(合成少数类过采样技术)
- 加权投票集成分类器
- DNN结合Focal Loss
- PCA-Kmeans聚类与DNN-Focal Loss的混合方法
-
实验设计与结果分析
- 数据集描述与实验设置
- 不同方法的性能对比
- 关键指标解读(F1分数、AUC、准确率)
-
代码示例
- 数据预处理与特征工程
- SMOTE实现
- 加权投票分类器构建
- DNN与Focal Loss模型训练
- PCA-Kmeans与DNN的混合方法
-
结论与未来方向
- 方法优缺点总结
- 实际应用建议
- 研究展望
1. 引言
1.1 脑卒中的全球影响
脑卒中是全球第二大死亡原因,占所有死亡病例的11.8%(GBD 2013)。早期预测中风风险对降低死亡率至关重要,而机器学习技术为此提供了新思路。然而,医疗数据集通常存在严重的类别不平衡问题,即中风病例(少数类)远少于非中风病例(多数类),导致模型倾向于忽略少数类,预测性能下降。
1.2 类别不平衡问题的核心痛点
- 多数类主导:传统模型(如逻辑回归、SVM)在训练时会偏向多数类。
- 评估指标误导性:仅依赖准确率会掩盖模型对少数类的预测失败。
- 数据稀缺性:少数类样本不足,难以捕捉关键特征。
本文基于Kaggle的脑卒中数据集,系统比较了四种解决类别不平衡的方法,并通过实验验证其有效性。
2. 数据预处理与特征选择
2.1 数据介绍
| 特征名称 | 描述 | 取值范围 | 作用 |
|---|---|---|---|
| Patient ID | 患者的唯一标识符,用于区分不同的个体。 | 1到5110(整数) | 主要用于数据管理和分析,但在建模时通常会被移除,因为它对预测中风没有直接帮助。 |
| Gender(性别) | 患者的性别。 | Male(男性)、Female(女性)、Other(其他) | 性别可能与中风的风险相关,例如某些研究表明男性中风的风险可能高于女性。 |
| Age(年龄) | 患者的年龄。 | 0.08岁到82岁 | 年龄是中风的重要风险因素之一,通常中风在老年人中更为常见。 |
| Hypertension(高血压) | 患者是否患有高血压。 | Yes(是)、No(否) | 高血压是中风的主要风险因素之一,与中风的发生有很强的相关性。 |
| Heart Disease(心脏病) | 患者是否患有心脏病。 | Yes(是)、No(否) | 心脏病可能增加中风的风险,因为心脏问题可能导致血液流动异常。 |
| Ever Married(是否曾经结婚) | 患者是否曾经结婚。 | Yes(是)、No(否) | 婚姻状况可能与生活方式和健康行为相关,间接影响中风风险。 |
| Work Type(工作类型) | 患者的工作类型。 | Self-employed(自雇)、Private(私营企业员工)、Government(政府雇员) | 工作类型可能与生活方式相关,间接影响健康。 |
| Residence Type(居住类型) | 患者的居住类型。 | Urban(城市)、Rural(农村) | 居住环境可能与生活方式和健康资源相关,间接影响中风风险。 |
| Avg-Glucose Level(平均血糖水平) | 患者的平均血糖水平。 | 55到272 | 高血糖是中风的风险因素之一。 |
| BMI(体质指数) | 患者的体质指数。 | 10到98 | BMI与肥胖相关,肥胖是中风的潜在风险因素。 |
| Smoking Status(吸烟状态) | 患者的吸烟状态。 | Unknown(未知)、Never(从不吸烟)、Formerly(曾经吸烟)、Smoked(吸烟) | 吸烟是中风的重要风险因素。 |
| Stroke(目标变量) | 表示患者是否中风。 | 1(中风)、0(未中风) | 这是需要预测的目标变量。 |
2.2 数据来源与清洗
数据集包含5110个样本,11个特征(如年龄、血糖水平、BMI等),目标变量为是否中风。清洗步骤包括:
- 移除异常值(如BMI > 60、年龄 < 25、性别为“其他”的样本)。
- 处理缺失值(仅BMI存在缺失)。
import pandas as pd# 加载数据
df = pd.read_csv("stroke_dataset.csv")# 移除异常值
df = df[(df['BMI'] <= 60) & (df['Age'] >= 25) & (df['Gender'] != 'Other')]# 处理缺失值(简单填补:用中位数填充BMI)
df['BMI'].fillna(df['BMI'].median(), inplace=True)
2.3 缺失值处理方法对比
论文对比了两种方法:
- 简单填补:用中位数、众数等填充。
- 回归填补:基于其他特征训练回归模型预测缺失值。
相关文章:
机器学习在脑卒中预测中的应用:不平衡数据集处理方法详解
机器学习在脑卒中预测中的应用:不平衡数据集处理方法详解 目录 引言 脑卒中的全球影响机器学习在医疗预测中的挑战类别不平衡问题的核心痛点数据预处理与特征选择 数据来源与清洗缺失值处理方法类别特征编码特征选择技术处理类别不平衡的四大方法 SMOTE(合成少数类过采样技术…...
数据表的存储过程和函数介绍
文章目录 一、概述二、创建存储过程三、在创建过程中使用变量四、光标的使用五、流程控制的使用六、查看和删除存储过程 一、概述 存储过程和函数是在数据库中定义的一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句。存储过程和函数可…...
为AI聊天工具添加一个知识系统 之117 详细设计之58 思维导图及观察者效应 之2 概念全景图
(说明:本文和上一篇问题基本相同,但换了一个模型 deepseek-r1) Q1227、在提出项目“为使用AI聊天工具的聊天者加挂一个专属的知识系统”后,我们已经进行了了大量的讨论-持续了近三个月了。这些讨论整体淋漓尽致体现了…...
Error [ERR_REQUIRE_ESM]: require() of ES Module
报错信息: 【报错】Message.js 导入方式不对,用的是 ES Moudle 的语法,提示使用 import 引入文件 项目开发没有用到 js-message 依赖,是 node-ipc 依赖中用到的 js-message 依赖, node-ipc 中限制 js-message 版本&a…...
GStreamer源码安装1.24版本
从官网下载 1.24的源码包 https://gitlab.freedesktop.org/gstreamer/gstreamer/-/tree/1.24?ref_typeheads#getting-started ,尝试过使用git clone 的方式,但速度贼慢,就选择了下载源码包的方式安装依赖 sudo apt install libssl-dev g me…...
从CNN到Transformer:遥感影像目标检测的未来趋势
文章目录 前言专题一、深度卷积网络知识专题二、PyTorch应用与实践(遥感图像场景分类)专题三、卷积神经网络实践与遥感影像目标检测专题四、卷积神经网络的遥感影像目标检测任务案例【FasterRCNN】专题五、Transformer与遥感影像目标检测专题六、Transfo…...
从 x86 到 ARM64:CPU 架构的进化与未来
在计算机发展的历史长河中,x86、x64 和 ARM64 这三大主流 CPU 架构各自书写了辉煌的篇章。它们不仅代表了技术的进步,更承载着无数创新者的梦想与努力。 x86:从 16 位到 32 位的辉煌之路 诞生与崛起 1978 年,英特尔(…...
Java数据结构第十二期:走进二叉树的奇妙世界(一)
专栏:数据结构(Java版) 个人主页:手握风云 目录 一、树型结构 1.1. 树的定义 1.2. 树的基本概念 1.3. 树的表示形式 二、二叉树 2.1. 概念 2.2. 两种特殊的二叉树 2.3. 二叉树的性质 2.4. 二叉树的存储 三、二叉树的基本操作 一、树型结构 1.…...
基于ffmpeg+openGL ES实现的视频编辑工具-添加贴纸(八)
在当下丰富多元的音视频编辑应用领域,添加贴纸已然成为一项广受欢迎的功能,它能够为音视频作品注入独特的趣味与创意元素。本文将深入探究音视频添加贴纸背后所涉及的技术原理与实现路径。 一、技术原理概述 音视频从本质上来说,是由一系列连续的图像帧(针对视频部分)以…...
【AI时代】基于AnythingLLM+ Ollama + DeepSeek 搭建本地知识库
一、本地安装Ollama及DeepSeek 参考教程: https://blog.csdn.net/Bjxhub/article/details/145536134 二、下载并安装AnythingLLM AnythingLLM下载地址: https://anythingllm.com/ 傻瓜式安装即可 可以自定义安装路径。三、配置AnythingLLM并使用 3.…...
leetcode刷题记录(一百一十五)——64. 最小路径和
(一)问题描述 64. 最小路径和 - 力扣(LeetCode)64. 最小路径和 - 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下…...
UE5 编辑器辅助/加强 插件搜集
1. Actor Locker 地址:https://www.fab.com/listings/ec26ac5e-4720-467c-a3a6-b5103b6b74d0 使用说明:https://github.com/Gradess2019/ActorLocker 支持:5.0 – 5.5 简单的编辑器扩展。它允许你通过世界轮廓窗口/热键/上下文菜单在编辑器视…...
怎么在Github上readme文件里面怎么插入图片?
环境: Github 问题描述: 怎么在Github上readme文件里面怎么插入图片? https://github.com/latiaoge/AI-Sphere-Butler/tree/master 解决方案: 1.相对路径引用 上传图片到仓库 将图片文件(如 .png/.jpgÿ…...
什么是矩阵账号?如何高效运营tiktok矩阵账号
…...
SpringSecurity初始化的本质
一、对SpringSecurity初始化的几个疑问 通过前面第一次请求访问的分析我们明白了一个请求就来后的具体处理流程 对于一个请求到来后会通过FilterChainProxy来匹配一个对应的过滤器链来处理该请求。那么这里我们就有几个疑惑。 FilterChainProxy什么时候创建的?过滤器链和对应的…...
自注意力机制和CNN的区别
CNN:一种只能在固定感受野范围内进行关注的自注意力机制。CNN是自注意力的简化版本。自注意力:具有可学习感受野的CNN。自注意力是CNN的复杂形态,是更灵活的CNN,经过某些设计就可以变为CNN。 越灵活、越大的模型,需要…...
Vue 不同大版本与 Node.js 版本匹配的详细参数
Vue 2.x 与 Node.js 版本匹配: Vue 2.x 细分版本建议 Node.js 版本理由支持状态2.0 - 2.610.x - 14.x这些 Node.js 版本在 Vue 2.x 早期开发和维护阶段广泛使用,能提供稳定运行环境,适配当时常用构建工具和依赖包Node.js 10.x 维护期已结束;…...
本地部署DeepSeek-R1模型教程
文章目录 第一步:安装运行框架 哈喽各位小伙伴们,最近deepseek非常的火,不过因为全球访问量剧增经常会导致deepseek的服务器繁忙,如果想要稳定使用就得靠本地部署了,不仅可以稳定使用还能保护数据隐私,今天…...
设计心得——解耦的实现技术
一、说明 在前面的“设计心得——解耦”中,对解耦进行了高层次的抽象说明。本篇则对在实践中常用的解耦技术进行逐一分析说明,以期为开发者能更从理论到实践搭建一个桥梁。至于大家能够如何更好的在自己的项目中进行解耦的实践,就需要不断的…...
k2路由器登录校园网
教程1刷入Breed,并手动刷入Padavan固件:斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net) Padavan下载网址: 我用的是: Padavan 登录的网址是 192.168.123.1 Padavan配置教程: 先用网线连上校园网&#…...
基于Springboot学生宿舍水电信息管理系统【附源码】
基于Springboot学生宿舍水电信息管理系统 效果如下: 系统登陆页面 系统用户首页 用电信息页面 公告信息页面 管理员主页面 用水信息管理页面 公告信息页面 用户用电统计页面 研究背景 随着高校后勤管理信息化的不断推进,学生宿舍水电管理作为高校后勤…...
手机怎样玩电脑游戏?
如果您正在寻找一款能够实现手机远程控制电脑玩游戏的软件,本文推荐远程看看软件。这款软件不仅支持手机远程控制电脑,还具备电脑与电脑之间的多端互控功能,您能够随时随地畅玩游戏,享受无缝的游戏体验。此外,远程看看…...
【Linux网络】认识协议(TCP/UDP)、Mac/IP地址和端口号、网络字节序、socket套接字
⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1、初识协议2、UDP、TCP3、Mac、IP地址4、端口号5、网络字节序6、socket 1、初识协议 协议就是一种约定。如何让不同厂商生产的计…...
【软考知识】奇偶校验码,循环冗余码,海明码介绍
文章目录 **1. 奇偶校验码 (Parity Check Code)****基本原理****算法流程****优点与缺点****应用场景** **2. 循环冗余码 (Cyclic Redundancy Check, CRC)****基本原理****算法流程****例子****优点与缺点****应用场景** **3. 海明码 (Hamming Code)****基本原理****算法流程**…...
SOME/IP--协议英文原文讲解10
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2.2 Req…...
前端面试-网络协议篇
1.http网络协议中post和get有什么区别 在HTTP网络协议中,POST和GET主要有以下区别: 参数传递方式: GET:参数附加在URL后面,如example.com?key1value1&key2value2 。POST:参数放在HTTP请求体中。 数据…...
音视频入门基础:RTP专题(10)——FFmpeg源码中,解析RTP header的实现
一、引言 由《音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现》可以知道,FFmpeg接收RTP流时,其源码内部会调用rtp_read函数。而rtp_read函数内部会通过recvfrom函数接收基于UDP的RTP音视频数据。一般…...
1.1 go环境搭建及基本使用
golang下载地址: Download and install - The Go Programming Language (google.cn) 验证安装是否成功: go version 查看go环境 go env 注意:Go1.11版本之后无需手动配置环境变量,使用go mod 管理项目,也不需要把项目放到GO…...
Flask flash() 消息示例
目录 安装 Flask 入门:Flask flash() 基本示例 进阶:使用 Flask-WTF Flash 登录结果消息 详解:get_flashed_messages() 详解:flash() 消息的完整生命周期 Flask 提供 flash() 用于向 用户传递临时消息,通常用于: • 表单提交成功或失败 • 用户登录、注册、退出提…...
Gemini 2.0助力科学突破,AI联合科学家系统登场
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
