1.一种基于机器学习技术的心律失常分析系统,它包括:一.读入数据
外部获取一组两导联心电信号输入到MATLAB中;
设置一个空数组A,m行2*n列;
根据信号标注的R波点的位置按照其采样频率每个导联依次截取相应个点,两个导联截取出的数据依次存入数组A;
数组A中前m行n列的数据为第一导联的数据,m行n+1到2*n列为第二导联的数据;
二.对单通道心电图样本的第一导联进行特征提取的步骤:(1)设置i,将A中前m行n列的数据进行i次采样取A的1到m行1+2*(i-1)到3+2*(i-1)列的采样方法进行采样变为m*x的样本信号B,B中包含m个1*x的数组,设置空数组Y1;
(2)对B进行聚类,聚类数为x,这里假设x为3,聚类后得到大小为x*x的信号,并命名为C;
(3)设置a1到a3为C的第1到x行数组,对这三个数组进行求距离:先设定数组a1的距离值q1为2*i(i与步骤一中的i相同),求a1 a2之间的欧式距离s1;a1 a3之间的欧式距离s2;
然后求得a2的绝对距离q2=2*i+s1;a3的绝对距离q3=2*i+s2;
将q1的值放入C第1行第4列;q2的值放入C第2行第4列;q3的值放入C第3行第4列;
(4)将数组B对a1 a2 a3求相似性:
求B的第j行的数组(j=1,2,...,m)与a1 a2 a3的欧式距离d1 d2 d3,B的第j行的数组与a1的相似性m1=1/(d1-1),相应的与a2 a3的相似性为m2 m3;
比较m1 m2 m3三个值,取最大值mk(k=1,2,3),将C的第k行第4列的值赋给Y1的第j行第i列;
(5)输出Y1;
三.对单通道心电图样本的第二导联进行特征提取的步骤:(1)设置i,将A中m行n+1到2*n列的数据进行i次采样取A的1到m行1+2*(i-1)到3+2*(i-
1)列的采样方法进行采样变为m*x的样本信号B1,B1中包含,m个1*x的数组,设置空数组Y2;
(2)对B1进行聚类,聚类数为x1,这里假设x1为3,聚类后得到大小为x1*x1的信号,并命名为C1;
(3)设置a11到a31为C1的第1到x1行数组,对这三个数组进行求距离:先设定数组a11的距离值q11为2*i(i与步骤一中的i相同),求a11 a21之间的欧式距离s11;a11 a31之间的欧式距离s21;
然后求得a21的绝对距离q21=2*i+s11;a31的绝对距离q31=2*i+s21;
将q11的值放入C1第1行第4列;q21的值放入C1第2行第4列;q31的值放入C1第3行第4列;
(4)将数组B1对a11 a21 a31求相似性:求B的第j行的数组(j=1,2,....,m)与a1 a2 a3的欧式距离d11 d21 d31,B1的第j行的数组与a11的相似性m11=1/(d11-1),相应的与a21 a31的相似性为m21 m31;
比较m11 m21 m31三个值,取最大值mk1(k=1,2,3),将C的第k行第4列的值赋给Y2的第j行第i列;
(5)输出Y2;
四.输入分类器进行识别
label为标签矩阵;
(1)分出测试集训练集
设置变量end_sample;train;train_label;test;test_label;
end_sample为Y1 Y2 label三个数组按行拼接;取end_sample数组的1到m-m/5行1到2*n列,取出的这部分命名为train;
train_label是取end_sample的1到m-m/5行2*n+1列;test是取end_sample的m-m/5+1到m行1到2*n列;test_label是取end_sample的m-m/5+1到m行2*n+1列;
(2)输入分类器
将train train_label test 输入MATLAB自带的KNN分类器中(用函数knnclassify);
得到预测的标签并保存在变量predict_label中;
(3)计算准确率
将predict_label与test_label进行比较,在MATLAB中用find函数得到一个数组pre,用length函数计算pre的行数,并用这个数值除以数组test_label的行数得到准确率。