pythonMIT-BIH数据集⼼拍分类从R点提取到19类R点⼼拍分类到AAMI标准5分
类。。。蛋鸡品种
python MIT-BIH ⼼拍分类实现
前⾔
这可能是我⾃认为写的最难的⼀篇⽂章,对于所有做⼼电信号分类的同学来说这都是⼀⼤关以下所有的代码都是⾃⼰⼿敲的,这整个过程很复杂,按照我⼀贯的思路,我会写的尽量详细⼀是⽇后⽅便复习,⼆是⾃⼰看论⽂也好看⽂章也罢,好多都是囫囵半⽚,看了跟没看似的,所以⾃⼰⼀定要写的详细,⼀是⾃⼰对理论的⼀种梳理和理解,⼆是给相关的研究者提供清晰的思路,三是希望能给学弟学妹们做个榜样接下来进⼊正题
⼀.本⽂的主要内容和研究思路
⾸先不管对于机器学习还是深度学习,不管你最后要做的是⼏分类任务,你都需要把每⼀个⼼电信号提取出将每⼀种信号打上标签分类放在⼀起,⽽研究⼼电信号最常⽤的数据库就是MIT-BIH数据库,python也有专门的wfdb函数库对数据集进⾏读取,那将单独的⼼电信号提取出来就是第⼀步,提取的时候我们根据通过函数读取的标签再将每⼀类分到⼀起,打包作为数据集,打包之后准备⼀个⾼效的读取⽅式能让
他在将来的分类时被调⽤为了实现上⾯的步骤就需要⼀个庞⼤的过程我们从头开始,如果你有研究基础直接移步到第四步即可
⼆.ECG信号的读取养成良好习惯
MIT-BIH 是由美国⿇省理⼯学院提供的研究⼼律失常的数据库
链接: .
点进去之后下翻点击Download the ZIP file就可以下载MIT-BHI数据集
下载成功之后你将会得到⼀个叫这个名字的压缩⽂件
我们建⽴⼀个⼯程将该⽂件夹解压在⼯程⽬录下
之后我们先来简单读取⼀下⼼电信号打出来个图看看
# 导⼊⼼电信号处理函数库
import wfdb
# 导⼊python的类matlab绘图函数库
import matplotlib.pyplot as plt
# 读取本地的100号记录,从0到25000,读取模拟信号,通道0
小人奔跑
record = wfdb.rdrecord('mit-bih-arrhythmia-databa-1.0.0/100', sampfrom=0, sampto=25000, physical=True, channels=[0,]) # 读取,从第145个数据到第756个数据
ventricular_signal = record.p_signal[144:756]
# 打印标题
plt.title("ventricular signal")
# 打印信号
我们的运动会
plt.plot(ventricular_signal)
# 显⽰图像
plt.show()
wfdb 和 matplotlib 两个库需要⾃⼰在电脑的cmd命令提⽰符操作框内使⽤pip命令安装安装
敬业福字图片
命令分别如下
pip install wfdb
pip install matplotlib描写小狗的文章
其中这⾥是读取⼼电信号最关键的⼀句
咖喱怎么做
record = wfdb.rdrecord('mit-bih-arrhythmia-databa-1.0.0/100', sampfrom=0, sampto=25000, physical=Fal, channels=[0,])
解释⼀下这⾥⽤到的各个参数
⾸先第⼀个参数’mit-bih-arrhythmia-databa-1.0.0/100’
这个参数要表达的意思是要读取mit-bih-arrhythmia-databa-1.0.0⽂件夹下的第100号⼼电数据的参数这个⽂件夹的名字我们⽑都没变直接给粘过来了
sampfrom=0, sampto=25000 这两句的意思是提取对应⼼电信号中第0到第25000个样本点
physical=Fal 这⾥设置成Fal 则提取出的信号为d_signal数字信号也就是没有转换成⼼电信号电压
幅度之前的原始信号的值可以代表最⼤的精度⽽设置成Ture
则会读取出每⼀个点的模拟信号值也就是对应采样点的mv电压值p_signal
上图对⽐⼀下
channels=[0, ]每⼀次读取的数据都包含两个通道的信号可以设置为channels=[0, ]选择第⼀个信号,channels=[, 1]选择第⼆个信
号,channels=[0, 1]选择两个信号
好的我们解释清楚我们的每⼀个函数了直接运⾏pycharm运⾏效果如下,我们终于显⽰出了⼀个⼼电信号波形
到这就完成⼼电信号显⽰的hello-world
三.⼼拍信号读取
在MIT-BIH数据集中有⼼拍种类如下表
⼼拍就指的是在⼼电信号中包含有⽤信息的⼀个数据点
Label_story symbol description中⽂描述
0Not an actual annotation
1N Normal beat正常⼼搏
Label_story symbol description中⽂描述2L Left bundle branch block beat左束⽀传导阻滞3R Right bundle branch block beat右束⽀传导阻滞4a Aberrated atrial premature beat异常⼼房早搏5V Premature ventricular contraction室性早搏
6F Fusion of ventricular and normal beat⼼室融和⼼搏7J Nodal (junctional) premature beat交界性早搏
8A Atrial premature contraction房性早搏
9S Premature or ectopic supraventricular beat早搏或室上性⼀尾⼼搏10E Ventricular escape beat室性逸搏
11j Nodal (junctional) escape beat交界性逸搏12/Paced beat起搏⼼拍
13Q Unclassifiable beat⽆法分类的节拍14~Signal quality change信号质量变化16|Isolated QRS-like artifact 18s ST change St改变
19T T-wave change T波改变
20*Systole⼼脏收缩
21D Diastole⼼脏舒张
22"Comment annotation注释注释错过以后
23=Measurement annotation测量注释
24p P-wave peak P波峰值
25B Left or right bundle branch block传导阻滞⼼搏26^Non-conducted pacer spike起搏器伪迹27t T-wave peak T波峰值
28+Rhythm change节律变化
29u U-wave peak U波峰值
30?Learning
31!Ventricular flutter wave⼼室颤动
32[Start of ventricular flutter/fibrillation开始⼼室扑动/颤动33]End of ventricular flutter/fibrillation结束⼼室扑动颤动34e Atrial escape beat房性逸搏
35n Supraventricular escape beat室上性逸搏36@Link to external data (aux_note contains URL)
37x Non-conducted P-wave (blocked APB)未下传的P波38f Fusion of paced and normal beat起搏融合⼼跳39(Waveform ont PQ junction(begin of QRS)QRS波开始