基于EEG信号的睡眠分期算法记录2-一种新的全自动随机森林睡眠分期算法(英)

一种新的全自动随机森林睡眠分期算法
摘要:快速动眼期(REM)睡眠行为障碍被认为是α-突触核蛋白病的前驱期。其诊断需要仔细检测快速眼动睡眠,金标准人工睡眠分期不一致且昂贵。这项工作提出了一种新的自动睡眠分期模型,仅使用脑电图(EEG)和电描记术(EOG)记录来为这种应用增加强大的自动化。公开可用的ISRUC-Sleep数据库用于优化所提出模型的设计。该模型在由100名有不同睡眠障碍证据的受试者组成的亚组中进行训练和测试,多导睡眠图数据由两名专家手工评分。我们将EOG和脑电图记录划分为以3s为步长的重叠运动33-s时期,并为每个时期计算了几个时域和频域特征。这些特征被用来训练随机森林分类器,该分类器能够用觉醒、快速眼动和非快速眼动的概率来标记每个33秒的时期。计算10个33s期的概率值的平均值,选择概率最高的睡眠期对30s期进行分类,并与人工分期睡眠图进行匹配。使用20倍交叉验证方案测试了模型的性能。当评分者同意的时期被使用时,分类达到了92.6%的总准确率和0.856的科恩kappa。
数据集:葡萄牙科学技术基金会(PFST)的公开数据集被称为ISRUC-sleep,用于开发算法;
数据:使用了脑电图和EOG记录,特别是根据AASM规则的F3-A2、C3-A2、O1-A2、ROC-A1和LOC-A2。
**1.预处理:**四个不同的零相位四阶零相位巴特沃斯带通滤波器:区分不同频率脑电波;

在这里插入图片描述

8个四阶零相位巴特沃斯带通滤波器被应用于两个EOG通道:
在这里插入图片描述
2.特征值提取:快速傅里叶变换
特征值:**在这里插入图片描述
**当睡眠专家手动给一个阶段打分时,会考虑相邻的阶段。这在算法中实现,以模拟手动睡眠阶段,并增加跨多个时期的一致性。因此,对于每个33秒的时期,来自30秒前的33秒时期的247个特征被添加到从当前时期计算的特征中。这导致每个33秒时期的[494x1]特征向量,包含来自连续66秒的数据。

3.特征值处理:归一化
在这里插入图片描述
在这里插入图片描述
4.特征分类:随机森林
其中200棵树和√M个特征被随机采样并在每次分割时进行替换,其中M对应于特征总数。
5.后处理:
对应于三个睡眠阶段的概率在十个相邻的时期被平均,产生包含这十个时期的平均概率的3×1向量。这在整个催眠图中进行,得到一个3×N的矩阵,其中N是30秒的阶段数。阶段被评分为产生1×N催眠图的概率最高的类别。
6.性能测量

为了评估算法的性能,进行了20倍的交叉验证。对于每个验证折叠,在每个睡眠阶段计算灵敏度、特异性和准确性。然后计算平均值和标准偏差,以显示数据集的总体表现和通过率。两个统计数据,总体准确性和科恩的kappa,被用来衡量评分者之间的一致。
结论:
在这里插入图片描述

在这里插入图片描述

【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于单通道脑电信号的自动睡眠分期研究python源码+项目说明+模型+数据+示例图片.zip 本项目使用了Sleep-EDF公开数据集的SC数据进行实验,一共153条整晚的睡眠记录,使用Fpz-Cz通道,采样频率为100Hz,数据获取与具体数据信息可前往数据集官网查看:[Sleep-EDF Database Expanded v1.0.0 (physionet.org)](https://physionet.org/content/sleep-edfx/1.0.0/)。 整套代码写的较为简洁,而且有添加相应的注释,因此进行分享,而且不仅仅说是睡眠分期,也可以作为学习如何使用神经网络去进行**时序数据分类**问题的一个入门项目,包括怎么用GRU、LSTM和Attention这些经典网络结构。 网络结构(具体可查看network.py文件): - 网络整体结构类似于[TinySleepNet](https://ieeexplore.ieee.org/document/7961240/),对RNN部分进行了修改,增加了双向RNN、GRU、Attention等网络结构,可根据参数进行调整选择。 - 定义了seq_len参数,可以更灵活地调整batch_size与seq_len。 数据集加载(具体可查看dataset.py文件) - 直接继承自torch的Dataset,并定义了seq_len和shuffle_seed,方便调整输入,并复现实验。 训练(具体可查看train.py文件): - 定义并使用了focal loss损失函数 - 在实验中有使用wandb,感觉用起来还挺方便的,非常便于实验记录追溯 测试(具体可查看test.py文件): - 可以输出accuracy、mf1、recall_confusion_matrics、precision_confusion_matrics、f1_confusion_matrics评价指标 ## 使用 ### 1. 安装环境 ``` pip install -r requirements.txt ``` ### 2. 数据准备 下载数据,信号和标注文件格式为edf文件。 ``` python downloading_sleepedf.py ``` 处理数据,并保存为numpy数组。 ``` python prepare_data.py ``` ### 3. 模型训练 ``` python train.py --n_epochs 150 --batch_size 16 --seq_len 64 --network "GRU" ``` 如果不知道要使用哪些哪些参数,可以看下代码,或者使用`python train.py -h`来查看。 ### 4. 模型测试 .....
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值