update readme.md

This commit is contained in:
weiyuqing committed 2023-04-20 13:31:19 +08:00
1 parent af187d92e9
commit e44ea0019c
2 files changed
+20 -114

No files matched your search

+20 -22
View File
@@ -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 代码运行说明
-92
View File
@@ -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,)