mirror of
https://github.com/This-weiyuqing/ECG_by_Diffenert_CNN_Test.git
synced 2026-10-17 19:05:30 +08:00
update readme.md
This commit is contained in:
1 parent
af187d92e9
commit
e44ea0019c
2 files changed
+20
-114
No files matched your search
@@ -55,29 +55,26 @@ ECG实质上是一种微弱的生物电信号,也因此,其对于噪声的
|
||||
3. 开发者个人PC配置为i7-11800H,RTX3070Laptop,32G DDR4,具备针对本课题的算法运行能力。
|
||||
4. 开发者可通过浙江图书馆、Google学术等平台,获取到相应的文献以针对本课题进行进一步的知识储备。
|
||||
|
||||
## 3.3 主要参考文献
|
||||
## 3.3 毕业论文参考文献
|
||||
|
||||
[1] 《中国心血管健康与疾病报告2021》要点解读 [J]. 中国心血管杂志, 2022, 27(04): 305-18.
|
||||
|
||||
[2] SAMOL A, BISCHOF K, LUANI B, et al. Single-Lead ECG Recordings Including Einthoven and Wilson Leads by a Smartwatch: A New Era of Patient Directed Early ECG Differential Diagnosis of Cardiac Diseases? [J]. Sensors, 2019, 19(20): 4377.
|
||||
|
||||
[3] 张宁宁, 马金刚, 樊昭磊, et al. 基于机器学习的心电自动诊断算法综述 [J]. 医疗卫生装备, 2022, 43(05): 92-7.
|
||||
|
||||
[4] 刘奇. 基于集成学习算法的ECG身份识别 [D]; 吉林大学, 2019.
|
||||
|
||||
[5] 欧阳波. 基于小波分析的ECG信号处理技术研究 [D]; 湖南大学, 2014.
|
||||
|
||||
[6] LOGESH R, SUBRAMANIYASWAMY V, MALATHI D, et al. Enhancing recommendation stability of collaborative filtering recommender system through bio-inspired clustering ensemble method [J]. Neural Computing and Applications, 2020, 32(7): 2141-64.
|
||||
|
||||
[7] 李伟康. 基于混合深度学习算法的ECG心电信号分类研究 [D]; 江苏科技大学, 2022.
|
||||
|
||||
[8] 胡军锋, 郑彬. 基于深度学习的ECG/PPG血压测量方法 [J]. 生物医学工程研究, 2022, 41(1): 46-54.
|
||||
|
||||
[9] ZHU J, LV J, KONG D. CNN-FWS: A Model for the Diagnosis of Normal and Abnormal ECG with Feature Adaptive [J]. Entropy, 2022, 24(4): 471-.
|
||||
|
||||
[10] PETMEZAS G, HARIS K, STEFANOPOULOS L, et al. Automated Atrial Fibrillation Detection using a Hybrid CNN-LSTM Network on Imbalanced ECG Datasets [J]. Biomedical Signal Processing and Control, 2021, 63: 102194.
|
||||
|
||||
[11] 周飞燕, 金林鹏, 董军. 卷积神经网络研究综述 [J]. 计算机学报, 2017, 40(6): 1229-51.
|
||||
[1] 《中国心血管健康与疾病报告2021》要点解读 [J]. 中国心血管杂志, 2022, 27(04): 305-18.
|
||||
[2] SAMOL A, BISCHOF K, LUANI B, et al. Single-Lead ECG Recordings Including Einthoven and Wilson Leads by a Smartwatch: A New Era of Patient Directed Early ECG Differential Diagnosis of Cardiac Diseases? [J]. Sensors, 2019, 19(20): 4377.
|
||||
[3] 刘奇. 基于集成学习算法的ECG身份识别 [D]; 吉林大学, 2019.
|
||||
[4] 欧阳波. 基于小波分析的ECG信号处理技术研究 [D]; 湖南大学, 2014.
|
||||
[5] LOGESH R, SUBRAMANIYASWAMY V, MALATHI D, et al. Enhancing recommendation stability of collaborative filtering recommender system through bio-inspired clustering ensemble method [J]. Neural Computing and Applications, 2020, 32(7): 2141-64.
|
||||
[6] 李伟康. 基于混合深度学习算法的ECG心电信号分类研究 [D]; 江苏科技大学, 2022.
|
||||
[7] 胡军锋, 郑彬. 基于深度学习的ECG/PPG血压测量方法 [J]. 生物医学工程研究, 2022, 41(1): 46-54.
|
||||
[8] ZHU J, LV J, KONG D. CNN-FWS: A Model for the Diagnosis of Normal and Abnormal ECG with Feature Adaptive [J]. Entropy, 2022, 24(4): 471-.
|
||||
[9] PETMEZAS G, HARIS K, STEFANOPOULOS L, et al. Automated Atrial Fibrillation Detection using a Hybrid CNN-LSTM Network on Imbalanced ECG Datasets [J]. Biomedical Signal Processing and Control, 2021, 63: 102194.
|
||||
[10] GOLDBERGER A, AMARAL, L., GLASS, L., HAUSDORFF, J., IVANOV, P.C., MARK, R., MIETUS, J.E., MOODY, G.B., PENG, C.K. AND STANLEY, H.E., 2000. PhysioBank, PhysioToolkit, and PhysioNet: Components of a new research resource for complex physiologic signals. [J]. Circulation [Online], 2000, (101 (23)): e215–e20.
|
||||
[11] 贺京生. 基于小波变换的十二导联心电信号分析研究 [D]; 南昌大学, 2016.
|
||||
[12] HUBEL D H, WIESEL T N. Receptive fields, binocular interaction and functional architecture in the cat's visual cortex [J]. The Journal of Physiology, 1962, 160(1): 106-54.
|
||||
[13] FUKUSHIMA K. Cognitron: A self-organizing multilayered neural network [J]. Biological Cybernetics, 1975, 20(3-4): 121-36.
|
||||
[14] FUKUSHIMA K. Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position [J]. Biological Cybernetics, 1980, 36(4): 193-202.
|
||||
[15] LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition [J]. Proceedings of the IEEE, 1998, 86(11): 2278-324.
|
||||
[16] TOMPOLLARD. MIT-LCP/wfdb-python:Native Python WFDB package [Z].
|
||||
[17] HOCHREITER S, SCHMIDHUBER J. Long short-term memory [J]. Neural Comput, 1997, 9(8): 1735-80.
|
||||
[18] BUBECK S E, CHANDRASEKARAN V, ELDAN R, et al. Sparks of Artificial General Intelligence: Early experiments with GPT-4 [J]. arXiv pre-print server, 2023.
|
||||
|
||||
# 4 代码文件说明
|
||||
## 4.1 _main_tensorflow_oneLayerCNN.py
|
||||
@@ -200,3 +197,4 @@ ECG实质上是一种微弱的生物电信号,也因此,其对于噪声的
|
||||
|
||||
本部分不做展开描述。您有想法可发邮件至this_weiyuqing@foxmail.com探讨。
|
||||
|
||||
# 7 代码运行说明
|
||||
@@ -1,92 +0,0 @@
|
||||
import numpy as np
|
||||
import pywt
|
||||
import wfdb
|
||||
import torch
|
||||
|
||||
from ECG_read_weiyuqing_without_wfdb import ECGDATAPATH
|
||||
|
||||
|
||||
def denoise(date):
|
||||
# Wavelet db5 level9
|
||||
coeffs = pywt.wavedec(data=date, wavelet='db5', level=9)
|
||||
cA9, cD9, cD8, cD7, cD6, cD5, cD4, cD3, cD2, cD1 = coeffs
|
||||
# noice del
|
||||
threshold = (np.median(np.abs(cD1)) / 0.6745) * (np.sqrt(2 * np.log(len(cD1))))
|
||||
# take cD 1,2 turn 0 to denoise
|
||||
cD1.fill(0)
|
||||
cD2.fill(0)
|
||||
for i in range(1, len(coeffs) - 2):
|
||||
coeffs[i] = pywt.threshold(coeffs[i], threshold)
|
||||
# get signal that before wavelet
|
||||
rdata = pywt.waverec(coeffs=coeffs, wavelet='db5')
|
||||
return rdata
|
||||
|
||||
|
||||
# get ECG data,date type and denoise
|
||||
# this function without return
|
||||
# use append take return data to pass data
|
||||
def getDataSet(number, X_data, Y_data):
|
||||
ecgClassSet = ['N', 'A', 'V', 'l', 'R']
|
||||
print('get' + number + ' ECG data')
|
||||
record = wfdb.rdrecord(ECGDATAPATH + number, channel_names=['MLII'])
|
||||
data = record.p_signal.flatten()
|
||||
# use def denoise
|
||||
rdata = denoise(date=data)
|
||||
|
||||
# get type of ECG data
|
||||
annotation = wfdb.rdann(ECGDATAPATH + number, 'atr')
|
||||
Rlocation = annotation.sample # annotation.sample:get R
|
||||
Rclass = annotation.symbol
|
||||
|
||||
# delete stable date near R
|
||||
start = 10
|
||||
end = 5
|
||||
i = start
|
||||
j = len(annotation.symbol) - end
|
||||
|
||||
# get NAVLR type data
|
||||
while i < j:
|
||||
try:
|
||||
lable = ecgClassSet.index(Rclass[i])
|
||||
x_train = rdata[Rlocation[i] - 99:Rlocation[i] + 201]
|
||||
X_data.append(x_train)
|
||||
Y_data.append(lable)
|
||||
i += 1
|
||||
except ValueError:
|
||||
i += 1
|
||||
return
|
||||
|
||||
|
||||
# RATIO=The ratio of the training set to the test set,usually is 0.3
|
||||
def loadData(RATIO):
|
||||
numberSet = [
|
||||
'100', '101', '103', '105', '106', '107', '108', '109', '111', '112', '113', '114', '115', '116', '117', '119',
|
||||
'121', '122', '123', '124', '200', '201', '202', '203', '205', '208', '210', '212', '213', '214', '215', '217',
|
||||
'219', '220', '221', '222', '223', '228', '230', '231', '232', '233', '234'
|
||||
]
|
||||
dataSet = []
|
||||
labelSet = []
|
||||
for n in numberSet:
|
||||
getDataSet(n, dataSet, labelSet)
|
||||
|
||||
dataSet = np.array(dataSet).reshape(-1, 300)
|
||||
labelSet = np.array(labelSet).reshape(-1, 1)
|
||||
train_ds = np.hstack((dataSet, labelSet))
|
||||
np.random.shuffle(train_ds)
|
||||
|
||||
X = train_ds[:, :300].reshape(-1, 300, 1)
|
||||
Y = train_ds[:, 300]
|
||||
# cut test and train data from ECG data
|
||||
shuffle_index = np.random.permutation(len(X))
|
||||
test_length = int(RATIO * len(shuffle_index))
|
||||
test_index = shuffle_index[:test_length]
|
||||
train_index = shuffle_index[test_index:]
|
||||
X_test, Y_test = X[test_index:], Y[test_index]
|
||||
X_train, Y_train = X[train_index], Y[train_index]
|
||||
return X_train, Y_test, X_test, Y_train
|
||||
|
||||
|
||||
class CNN_model_level_one(torch.nn.Module):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.conv1 = torch.nn.Conv1d(in_channels=1,out_channels=1,)
|
||||
Reference in new issue
Block a user