日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/8/1 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 睡眠阶段分期——SVM和ELM分别与粒子群算法结合(main) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要:本研究的目的是建立具有最佳準(zhǔn)確率的分類模型,以心電圖(ECG)信號(hào)為基礎(chǔ),使用心率變異性(HRV)特征來(lái)識(shí)別睡眠階段。該方法是極端學(xué)習(xí)機(jī)器(ELM)和粒子群優(yōu)化(PSO)的組合,用于特征選擇和隱藏節(jié)點(diǎn)數(shù)的確定。ELM和PSO組合的2、3、4和6分類的測(cè)試精度分別為?82.1%, 76.77%, 71.52%, 62.66%。本文還比較了ELM和支持向量機(jī)(SVM)方法,其測(cè)試精度低于ELM和PSO的組合。根據(jù)結(jié)果,可以得出PSO方法的添加能夠提高分類性能。

文獻(xiàn)鏈接:https://ieeexplore.ieee.org/document/8463307 、 https://ieeexplore.ieee.org/document/8276358

開(kāi)源代碼鏈接:https://github.com/fennialesmana/sleep-stage-identification

目錄

step 1?導(dǎo)入并同步所有數(shù)據(jù)

step 2 特征提取

step 3 建立分類模型

step 4 結(jié)果提取


主函數(shù)代碼:

step 1?導(dǎo)入并同步所有數(shù)據(jù)

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 導(dǎo)入并同步所有數(shù)據(jù) SlpdbData = []; SingleFile = []; nRecSamples = zeros(length(fileNames), 1); for i=1:size(fileNames, 2) %返回列數(shù)‘18’SingleFile = importslpdb(fileNames(i)); %importslpdb函數(shù)——導(dǎo)入文件內(nèi)容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函數(shù)——將頭文件、RR文件、注釋文件導(dǎo)入并構(gòu)成結(jié)構(gòu)體: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函數(shù)——導(dǎo)入第x例(這里為1)樣本的字段及對(duì)應(yīng)數(shù)據(jù) extractfeatures(SlpdbData, 'features/', 'all'); extractfeatures函數(shù)——沒(méi)有輸出變量,輸出兩個(gè)文件↘ 含HRVFeature函數(shù)——計(jì)算特征 % 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函數(shù)——導(dǎo)入第index例樣本的字段及對(duì)應(yīng)數(shù)據(jù)?

extractfeatures函數(shù)——沒(méi)有輸出變量,輸出非歸一化、歸一化的特征文件('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); % 在指定的文件路徑下創(chuàng)建新的文件夾for iClass=1:length(classNum)ExperimentResult = struct([]);for iExp=1:MAX_EXPERIMENT % 循環(huán)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函數(shù)——通過(guò)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; % 粒子數(shù)20PSOSettings.W = 0.6; % W是慣性重量PSOSettings.c1 = 1.2; % 𝑐1是每個(gè)粒子趨向于p-best的趨勢(shì)PSOSettings.c2 = 1.2; % 𝑐2是每個(gè)粒子趨向于g-best的趨勢(shì)。PSOSettings.Wa = 0.95;PSOSettings.Wf = 0.05; % Wa、Wf表明高精度的重要性和更少的選擇功能(具體見(jiàn)文獻(xiàn))switch methodcase 'PSOELM' % 具體實(shí)現(xiàn)見(jiàn)鏈接[result, startTime, endTime] = PSOforELM(nFeatures, ...trainingData, testingData, PSOSettings);case 'PSOSVM' % 具體實(shí)現(xiàn)見(jiàn)鏈接[result, startTime, endTime] = PSOforSVM(nFeatures, ...trainingData, testingData, PSOSettings);end% END OF PARTICLE SWARM OPTIMIZATION (PSO) PROCESSExperimentResult(iExp).iterationResult = result;ExperimentResult(iExp).startTime = startTime;ExperimentResult(iExp).endTime = endTime;endsave(sprintf('%s/%s_%s_%dclasses_raw_result.mat', path, method, ...fileNames{iFile}, nClasses), 'ExperimentResult', '-v7.3');endend% END OF STEP 3

PSOforELM函數(shù)——PSO的初始化、結(jié)合ELM的PSO迭代

PSOforSVM函數(shù)——PSO的初始化、結(jié)合SVM的PSO迭代

step 4 結(jié)果提取

%{ %% STEP 4: RESULT EXTRACTION extractresults('PSOELM_raw_result', 18, classNum, MAX_EXPERIMENT, MAX_ITERATION); % END OF STEP 4 %}

extractresults函數(shù)——沒(méi)有輸出變量,有Excel輸出文件(每次實(shí)驗(yàn)結(jié)果、所有實(shí)驗(yàn)的最好結(jié)果)、保存gBest隨迭代變化圖片

?

僅用于本人學(xué)習(xí),所附文章、開(kāi)源代碼并非原創(chuàng)!

總結(jié)

以上是生活随笔為你收集整理的睡眠阶段分期——SVM和ELM分别与粒子群算法结合(main)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。