Physionet Apnea-ecg数据库预处理(一):ECG信号读取

2 篇文章 0 订阅
1 篇文章 1 订阅

一、前言

    这篇博客主要是关于Apena-ecg数据库中ECG信号的读取,将数据库中的.dat文件(ECG数据)和.apn文件(标签)做成TXT格式,方便后续的处理。

    apnea-ecg信号读取部分代码:https://github.com/zzklove3344/CodeForReadingApneaECG

二、TXT文件的生成与读取

    根据apnea-ecg的官方说明,每个.dat文件中存的是一个晚上的ECG信号,.apn文件存的是ECG信号的标签。标签是对每分钟ECG片段的标注,共2种,A(disordered breathing)和N(normal breathing)。目的是对整个晚上的ECG信号按照每分钟进行划分,与每个标签能够相对应。这样做的好处,一是方便读取,读某一分钟的ECG片段的数据与标签,不需要将整个晚上的ECG数据和整个标签全部读进来;二是方便分类错误定位,可以将每分钟的ECG片段分配一个独立ID,当做分类之后,想要查看分类器将哪些ECG信号错误分类了,可以快读定位到错误的ECG片段,方便后续的优化。

    工具:pycharm, wfdb工具包(python环境下的包)

2.1 ECG片段数据结构

    每个ECG片段,除了有ECG片段的数据,标签,为了快速定位,还需要一个全局ID以及一个局部ID(该ECG片段在哪个.dat文件中,在第多少分钟)。为了后续数据集的扩展,加了一个数据库名称的属性。以下代码给出了ECG片段类的属性定义。

class ECGDataSegment:
    """
    Minute-by-minute ECG segment.
    """

    def __init__(self):
		self.data = None              # ECG segment data
		self.label = None             # ECG segment label
		self.database = "apnea-ecg"   # Database name
		self.filename = None          # Which file does it belong to?
		self.local_id = None          # The ID in file
		self.global_id = None         # global ID in database

2.2 ECG片段的写入

   在构造完ECG片段的数据结构之后,就可以针对该数据结构写读取函数了。对于每一个ECG记录,我们读出ECG数据和标签,然后利用标签中的采样点的开始位置,顺序读6000个构造ECG片段,再读出标签和一些辅助信息,一起写入TXT文件就可以了,TXT文件以全局ID(global_id)命名。另外还需要写入一个extra-info文件,主要记录ECG segments的总数,方便以后的读取。

    在这里训练集和测试集的处理有些不同。训练集中有.dat文件和.apn文件,测试集中有.dat文件,但没有.apn文件,标注文件是一个TXT文件。具体的代码见github链接。

2.3 ECG片段的读取

    在读取上训练集和测试集就没有写入上的不同了,使用相同的函数就可以读取了。

三、附录

    apnea-ecg数据库官方网站:https://physionet.org/physiobank/database/apnea-ecg/

    apnea-ecg(带测试集标签)百度网盘下载链接:

        链接:https://pan.baidu.com/s/1GPzUvBWYtKypxO1rYDUGRw 
        提取码:vxe9 

    apnea-ecg subjects基础信息统计表:https://physionet.org/physiobank/database/apnea-ecg/additional-information.txt

   

  • 10
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
physionet-master是一个用于生理信号处理和分类的数据集和工具库。它提供了多种用于信号处理和分类的算法和模型,可以用来对生理信号进行分类。这个工具库支持四个不同的分类任务,分别是二分类、多分类、多标签分类和层次分类。 在二分类任务中,我们将生理信号分为两个类别,例如正常和异常。physionet-master提供了多种常见的二分类算法,如支持向量机(SVM)、随机森林(Random Forest)和深度学习模型等。 在多分类任务中,我们将生理信号分为多个类别,例如心脏疾病的不同类型。physionet-master提供了一系列适用于多分类的算法,如逻辑回归、k最近邻(KNN)和朴素贝叶斯等。 在多标签分类任务中,我们需要对每个样本分配多个标签,例如对不同疾病的同时诊断。physionet-master提供了多种扩展的分类算法,如多标签k最近邻(ML-KNN)、多标签支持向量机(ML-SVM)和多标签逻辑回归(MLLR)等。 在层次分类任务中,我们需要将样本分配到多个层次上。例如,对心脏疾病进行分层诊断,首先诊断是否发生心脏病,然后根据具体类型做进一步的诊断。physionet-master提供了层次分类算法,如多标签-层次可加的(ML-HC)和多标签-递归(ML-R)等。 总之,通过physionet-master的四分类任务,我们可以对生理信号进行准确而灵活的分类,从而提高对不同生理状况和疾病的诊断能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值