【LSTM分类】基于双向长短时记忆(BiLSTM)实现数据分类含Matlab源码

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

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

⛄ 内容介绍

为提高心拍的分类效果,研究基于双向长短期记忆(BiLSTM)模型的深度学习算法.首先,采用"双斜率"法对心电信号进行预处理;然后,设计自适应阈值对预处理后的心电信号进行QRS波定位,并依据R波波峰分割截取心拍;最后,采用BiLSTM模型的深度学习算法对获取的心拍形态进行分类.使用MIT-BIH心率失常数据库验证算法有效性,实验结果表明:文中算法对正常或束支传导阻滞(N),室上性异常(S),心室异常(V),融合(F)类型的敏感性分别为98.56%,97.10%,93.33%,79.52%,特异性分别为98.38%,98.08%,98.54%,99.65%;与传统的支持向量机等方法相比,文中算法能够进一步提高心拍分类的正确率.​

⛄ 部分代码

%---------------------------------------------------------------------------------------------------------------------

% Copyright (c) 2019 Kyriaki Kostoglou

% PhD Supervisor: Georgios Mitsis, Associate Professor, Bioengineering Department, McGill University, Montreal, Canada

% Biosignals and Systems Analysis Lab

% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the % % "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, % distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to % the following conditions:

% The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

% The Software is provided "as is", without warranty of any kind.

%---------------------------------------------------------------------------------------------------------------------

%Estimate TV covariance of the MVAR residuals using GARCH models (see Eq.22)

function results=estimate_GARCH(e,metric,ignore,pmax,S)

M=size(e,1);

for m=1:M  

    %Testing different GARCH model orders for time-series m

    count=0;

    md=[];

    aic=[];

    bic=[];

    for q=0:pmax

        for r=1:pmax

            flag=0;

            fprintf('\nFitting GARCH to time-series %d - Testing model orders: [q=%d,r=%d] ',m,q,r)

            Mdl = garch(q,r);

            try

                %The following command may return the following

                %error:"Non-zero degree P requires a non-zero degree Q." is

                %there is no underlying true heteroskedasticity. Therefore

                %we try to catch the error.

                [EstMdl,EstParamCov,logL]  = estimate(Mdl,e(m,:)','Display','off');

                %If it finally goes through then flag is set to 1

                flag=1;

            catch

                %do nothing

            end

            if(flag==1)

                count=count+1;

                md(count,:)=[q r];

                [aic(count),bic(count)] = aicbic(logL,q+r,length(e(m,:)));   %compute AIC/BIC scores based on the estimated GARCH model         

            end

        end

    end

    

    %if aic or bic are nonempty vectors then we select the optimal model order based on the aic or bic scores

    %if aic or bic are empty vectors then it means that there is no real

    %heteroskedasticity in the data to be GARCH modeled 

    if(isempty(aic)==0)       

        if(metric==1)

            [mm,ii]=min(aic);

        else

            [mm,ii]=min(bic);

        end

        %Find optimal GARCH model orders by selecting the pair [q,r] with the minimum AIC/BIC score 

        fprintf('\nOptimal model order found: [q=%d,r=%d]\n',md(ii,:))

        Mdl = garch(md(ii,1),md(ii,2));

        [EstMdl]  = estimate(Mdl,e(m,:)');

        temp=infer(EstMdl,e(m,:)');

        results.EstMdl{m}=EstMdl;

        %Save TV variance as predicted by the fitted GARCH model for each residual time-series

        results.yGARCH(m,:)=smooth(temp(ignore:end),100);   %smooth the garch variance prediction

        results.hete(m)=1;

    else

        fprintf('\nNo heteroskedasticity detected')

        results.hete(m)=0;

    end

        

end

%Create diagonal TV covariance of the MVAR residuals

newN=size(results.yGARCH,2);

for k=1:newN

    results.SGARCH{k}=zeros(M,M);

    for m=1:M

        if(results.hete(m)==0)

            %if GARCH modeling failed, it means that there is no

            %heteroskedasticity in the residuals and we just use the

            %estimated variance on the whole residual time-series

            results.SGARCH{k}(m,m)=S(m,m);

        else

            %else we use the predicted GARCH TV variance

            results.SGARCH{k}(m,m)=results.yGARCH(m,k);

        end

    end         

end

end

%results is a structure that contains the following:

%results.EstMdl{m}=EstMdl;         %optimum GARCH estimated model for the mth time-series residuals

%results.yGARCH(m,:)               %predicted TV GARCH variance for the mth time-series residuals

%results.SGARCH{k}                 %TV GARCH covariance of the residuals at time point k

%results.hete(m)                   %0 if there is no underlying heteroskedasticity in the data else it is set to 1 and heteroskedasticity was modeled using GARCH models 

⛄ 运行结果

⛄ 参考文献

[1]万圣贤, 兰艳艳, 郭嘉丰, et al. 用于文本分类的局部化双向长短时记忆[J]. 中文信息学报, 2017, 31(3):7.

[2]叶良攀. 基于BiLSTM的铁路调度语音识别系统研究[D]. 兰州交通大学.

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值