摘要:本研究的目的是建立具有最佳准确率的分类模型,以心电图(ECG)信号为基础,使用心率变异性(HRV)特征来识别睡眠阶段。该方法是极端学习机器(ELM)和粒子群优化(PSO)的组合,用于特征选择和隐藏节点数的确定。ELM和PSO组合的2、3、4和6分类的测试精度分别为 82.1%, 76.77%, 71.52%, 62.66%。本文还比较了ELM和支持向量机(SVM)方法,其测试精度低于ELM和PSO的组合。根据结果,可以得出PSO方法的添加能够提高分类性能。

文献链接:https://ieeexplore.ieee.org/document/8463307 、 https://ieeexplore.ieee.org/document/8276358

开源代码链接:https://github.com/fennialesmana/sleep-stage-identification

目录

step 1 导入并同步所有数据

step 2 特征提取

step 3 建立分类模型

step 4 结果提取


主函数代码:

step 1 导入并同步所有数据

clear; clc; close all;
fileNames = {'slp01a' 'slp01b' 'slp02a' 'slp02b' 'slp03' 'slp04' ...'slp14' 'slp16' 'slp32' 'slp37' 'slp41' 'slp45' 'slp48' ...'slp59' 'slp60' 'slp61' 'slp66' 'slp67x'};%{
%% STEP 1: IMPORT AND SYNCHRONIZE ALL DATA  导入并同步所有数据
SlpdbData = [];
SingleFile = [];
nRecSamples = zeros(length(fileNames), 1);
for i=1:size(fileNames, 2)                   %返回列数‘18’SingleFile = importslpdb(fileNames(i));  %importslpdb函数——导入文件内容OutputData = struct('filename', fileName, 'time', anTimeGeneratedCell, ...'rr', rrCollection, 'annotation', anClassGeneratedCell, 'age', age, ...'gender', gender, 'weight', weight);SlpdbData = [SlpdbData;SingleFile];nRecSamples(i, 1) = length(SingleFile);
end
save('nRecSamples.mat', 'nRecSamples');
save('SlpdbData.mat', 'SlpdbData');% Output of this step:
% 1. nRecSamples.mat -> 18 x 1 matrix contains number of samples each file
% 2. SlpdbData.mat   -> 10154 x 1 struct contains synchronized data
% END OF STEP 1

importslpdb函数——将头文件、RR文件、注释文件导入并构成结构体:OutputData = struct('filename', fileName, 'time', anTimeGeneratedCell, ...'rr', rrCollection, 'annotation', anClassGeneratedCell, 'age', age, ...'gender', gender, 'weight', weight);

step 2 特征提取

%% STEP 2: FEATURE EXTRACTION   特征提取SlpdbData = loadmatobject('SlpdbData.mat', 1);    loadmatobject函数——导入第x例(这里为1)样本的字段及对应数据
extractfeatures(SlpdbData, 'features/', 'all');   extractfeatures函数——没有输出变量,输出两个文件↘ 含HRVFeature函数——计算特征
% Output of this step:
% 1. hrv_features_unorm.xlsx
% 2. hrv_features_norm.xlsx
% 3. target.xlsx
% 4. hrv_features_unorm.mat
% 5. hrv_features_norm.mat
% 6. target.mat
% END OF STEP 2%}

loadmatobject函数——导入第index例样本的字段及对应数据

extractfeatures函数——没有输出变量,输出非归一化、归一化的特征文件('xlsx', 'mat')

step 3 建立分类模型

method = 'PSOELM';
classNum = [2 3 4 6];
MAX_EXPERIMENT = 25;
MAX_ITERATION = 100;%% STEP 3: BUILD CLASSIFIER MODEL (OBJECT SPECIFIC RECORDING)for iFile=1:length(fileNames)path = sprintf('%s_raw_result/%s_%s_raw_result', method, method, ...fileNames{iFile});mkdir(path);        % 在指定的文件路径下创建新的文件夹for iClass=1:length(classNum)ExperimentResult = struct([]);for iExp=1:MAX_EXPERIMENT     % 循环25次fprintf('Building iFile = %d/%d, iClass = %d/%d, iExp = %d/%d\n', ...iFile, length(fileNames), iClass, length(classNum), iExp, ...MAX_EXPERIMENT);clearvars -except fileNames method MAX_EXPERIMENT classNum iFile ...  % 清除除了这些的所有变量iClass ExperimentResult iExp path MAX_EXPERIMENT MAX_ITERATIONnClasses = classNum(iClass);          % nClasses = total output class% load features and targetshrv = loadmatobject('features/hrv_features_norm.mat', 1);nFeatures = size(hrv, 2);target = loadmatobject('features/target.mat', 1);target = target(:, nClasses);hrv = [hrv target];    % combine features and target% load nRecSamples and retrieve selected recordingnRecSamples = loadmatobject('nRecSamples.mat', 1);hrv = hrv(getindexrange(nRecSamples, iFile), :);      % getindexrange函数——通过index得到输入向量的范围% SPLIT DATA% 70% training data and 30% testing data using stratified samplingtrainingRatio = 0.7;trainingData = [];testingData = [];for i=1:nClasses ithClassInd = find(hrv(:, end) == i);nithClass = ceil(size(ithClassInd, 1)*trainingRatio);trainingData = [trainingData; hrv(ithClassInd(1:nithClass), :)];testingData = [testingData; hrv(ithClassInd(nithClass+1:end), :)];end% END OF SPLIT DATA% PARTICLE SWARM OPTIMIZATION (PSO) PROCESSPSOSettings.MAX_ITERATION = MAX_ITERATION;PSOSettings.nParticles = 20;        % 粒子数20PSOSettings.W = 0.6;                % W是惯性重量PSOSettings.c1 = 1.2;               % 												

睡眠阶段分期——SVM和ELM分别与粒子群算法结合(main)相关推荐

  1. 【SVM回归预测】基于matlab粒子群算法优化SVM回归预测【含Matlab源码 1424期】

    ⛄一.粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都 ...

  2. 【SVM回归预测】基于matlab粒子群算法优化SVM回归预测(多输入多输出)【含Matlab源码 1421期】

    一.粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都遵 ...

  3. 【SVM时序预测】基于粒子群算法优化支持向量机PSO-SVM实现期贷时序数据预测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  4. 【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 036期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [优化预测]基于matlab粒子群算法优化ELM神经网络预测[含Matlab源码 036期] 二.粒子群算法及ELM简介 1 粒子群算法简 ...

  5. 【回归预测-ELM预测】基于粒子群算法PSO优化极限学习机预测附matlab代码

    1 内容介绍 风电功率预测为电网规划提供重要的依据,研究风电功率预测方法对确保电网在安全稳定运行下接纳更多的风电具有重要的意义.针对极限学习机(ELM)回归模型预测结果受输入参数影响的问题,现将粒子群 ...

  6. 【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 1586期】

    一.粒子群算法简介 1 粒子群算法简介 1.1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他 ...

  7. 【ELM预测】基于粒子群算法改进极限学习机ELM实现数据预测matlab源码

    一.极限学习机的概念 极限学习机(Extreme Learning Machine) ELM,是由黄广斌提出来的求解单隐层神经网络的算法. ELM最大的特点是对于传统的神经网络,尤其是单隐层前馈神经网 ...

  8. 【ELM预测】基于粒子群算法PSO优化极限学习机预测含Matlab源码

    1 模型 为了提高空气质量预测精度,提出一种基于粒子群算法优化极限学习机的空气质量预测模型.运用粒子群算法优化极限学习机的初始权值和偏置,在保证预测误差最小的情况下实现空气质量最优预测.选择平均绝对百 ...

  9. 【SVM分类】基于粒子群算法优化支持向量机实现葡萄酒数据分类附matlab代码

    1 简介 在机器学习领域,要处理的数据的规模越来越大,而学习算法在数据的特征过多的时候,往往会产生性能上的下降.作为解决这个问题的有效手段,特征选择一直以来都得到了广泛的关注.粒子群优化算法作为一种优 ...

  10. 基于粒子群算法的极限学习机(ELM)分类算法-附代码

    基于粒子群算法的极限学习机(ELM)分类算法 文章目录 基于粒子群算法的极限学习机(ELM)分类算法 1.极限学习机原理概述 2.ELM学习算法 3.分类问题 4.基于粒子群算法优化的ELM 5.测试 ...

最新文章

  1. siamese网络_CVPR 2019手写签名认证的逆鉴别网络
  2. 云计算如何重塑和简化大规模IT资产
  3. 深度学习之利用TensorFlow实现简单的全连接层网络(MNIST数据集)
  4. C语言printf与scanf函数
  5. HDU4859 海岸线(最小割)
  6. python-面向对象名词解析(类、实例、属性、方法、对象)
  7. 张季跃 201771010139《面向对象程序设计(java)》第十八周学习总结
  8. 爬虫开发.1爬虫介绍
  9. logo是啥_logo是什么?
  10. 使用Maven导出war包
  11. Gstreamer之gst_omx_video_enc_set_format(二十七)
  12. 关键词抓取规则,关键词标题SEO技巧
  13. 怎样识别app网站服务器在国外,APP服务器你了解多少?什么是海外app服务器
  14. 黑盘-蓝盘-绿盘-红盘
  15. linux图片格式转换工具,在Linux系统上安装和使用Converseen批量图像转换器的方法...
  16. 基于安卓/android/微信小程序的学生考勤签到APP-#计算机毕业设计
  17. 李宏毅老师《机器学习》课程笔记-4.1 Self-attention
  18. seo全攻略_SEO优化操作流程是怎样的?有哪些步骤?
  19. Compose 横竖屏切换时状态如何保存?rememberSaveable 实现原理分析
  20. FlyMcu下载出现“从08000000开始运行失败...可能是因为刚写了选项字节!!!”解决方法!

热门文章

  1. Tomcat日志乱码问题解决方法
  2. Linux抓包命令集锦(tcpdump抓包)
  3. 国内nodejs下载网站
  4. labview混合编程学习
  5. vdbench的作用_基于SSD的iSCSI target的建立和Vdbench测试
  6. ICEM 二维块的拉伸
  7. JAVAweb之SSH框架
  8. 199的Eagle一点都不香了!这款Billfish,让你不花钱免费“嫖”
  9. Deep Glow mac(AE高级辉光特效插件)支持AE2022
  10. Kettle下载Redisinput插件查询Redis数据