使用WFDB读取数据

读取.hea文件

读取record数据

使用rdrecord函数,该函数的返回值为一个wfdb中定义的record对象。

def rdrecord(record_name, sampfrom=0, sampto=None, channels=None,
             physical=True, pb_dir=None, m2s=True, smooth_frames=True,
            ignore_skew=False, return_res=64, force_channels=True,
           channel_names=None, warn_empty=False):

常用的重要参数:

几个经常使用的属性值:

  1. fs:采样频率;
  2. n_sig:信号通道数;
  3. sig_len:信号长度;
  4. p_signal:模拟信号值,储存形式为ndarray或者是list;
  5. d_signal:数字信号值,储存形式为ndarray或者是list。

这些属性都能直接进行访问(如:使用record.fs可以直接读取到采样频率)。

读取.art文件

其中的symbol为心拍注释(包括了正常类型N和各种异常类型)

常见的心拍注释

数据预处理和模型数据集构建

数据分布统计

对每一条数据的MLII导联通道的心拍类型做一个统计

数据裁剪转换成EXCEL TODO

小波变换去噪算法

小波变换有两个变量:尺度a(scale)和平移量 b(translation)

尺度a控制小波函数的伸缩, 平移量b控制小波函数的平移。尺度就对应于频率(反比),平移量b就对应于时间。

$$ \psi_{a, b}(t)=\frac{1}{\sqrt{a}} \psi\left(\frac{t-b}{a}\right) $$

函数x在标度a的子空间上的投影形式

$$ x_{a}(t)=\int_{\mathbb{R}} W T_{\psi}\{x\}(a, b) \cdot \psi_{a, b}(t) d b $$

小波系数公式:

$$ W T_{\psi}\{x\}(a, b)=\left\langle x, \psi_{a, b}\right\rangle=\int_{\mathbb{R}} x(t) \psi_{a, b}(t) d t $$

阈值公式:

$$ \lambda=\frac{median|w|\sqrt{2lnN}}{0.6745} $$

模型训练集和测试集建立

五种心律类别可视化

深度学习Model Build

构建CNN模型

机器学习分类模型常用评价指标有Accuracy, Precision, Recall和F1-score

$$ \text { Accuracy }=\frac{T P+T N}{T P+T N+F P+F N} $$$$ \text { Precision }=\frac{T P}{T P+F P} $$$$ \text { Recall }=\frac{T P}{T P+F N} $$$$ F 1-\text { score }=\frac{2 \times \text { Precision } \times \text { Recall }}{\text { Precision }+\text { Recall }} $$

Macro-average方法

Weighted-average方法

Micro-average方法

构建CNN+LSTM模型

模型进一步优化比较 TODO