zoukankan      html  css  js  c++  java
  • matlab编程代写贝叶斯隐马尔可夫hmm模型实现

    原文链接:http://tecdat.cn/?p=7973

    贝叶斯隐马尔可夫模型是一种用于分割连续多变量数据的概率模型。该模型将数据解释为一系列隐藏状态生成。每个状态都是重尾分布的有限混合,具有特定于状态的混合比例和共享的位置/分散参数。

    该模型中的所有参数都配备有共轭先验分布,并通过变化的贝叶斯(vB)推理算法学习,其本质上与期望最大化相似。该算法对异常值具有鲁棒性,并且可以接受缺失值。

     本文从未知的BRHMM生成一组数据序列 参数,并仅从这些数据中估算出 生成它们的模型。 结果绘制为 时间序列 

     设置状态,符号和特征的数量 

    NumState=2;
    
    NumSym=3;
    
    NumFeat=5;

     设置序列数,每个序列点数和缺失值 

    NumSeq=2;
    
    NumPoint=100;
    
    NumMiss=20;

     设置参数生成选项。TransParam=1/5 

    EmissParam=1/5;
    
    LocParam=2;
    
    DispParam=5;

     设置采样选项 

    NumDeg=5;
    
    NumObs=1000;

     打印 和显示状态 

    fprintf('
    ')
    
    fprintf('Sampling data ... ')

     生成用于采样的参数 

    [Trans,Emiss,Loc,Disp]=GenParam(NumState,NumSym,NumFeat,...
    
    TransParam,EmissParam,LocParam,DispParam);

     创建用于采样的模型 

    Obj= bhnn(NumState,NumSym,NumFeat);
    
    

     设置超参数 

    Obj.TransWeight=Trans;
    
    Obj.TransStren(:)=NumObs;
    
    Obj.EmissWeight=Emiss;
    
    Obj.EmissStren(:)=NumObs;
    
    Obj.CompLoc=Loc;
    
    Obj.CompScale(:)=NumObs;
    
    Obj.CompDisp=Disp;
    
    Obj.CompPrec(:)=max(NumObs,NumFeat);

     采样数据并随机删除值 

     更新状态 

    fprintf('Done
    ')
    
    fprintf('Estimating model ... ')

     创建估计模型 

    Obj=BHMM(NumState,NumSym,NumFeat);
    
    

     约束过渡参数 

    Obj.TransWeight=Trans;
    
    Obj.TransStren(:)=NumObs;

     估计模型和状态概率 

     更新状态 

     

     绘制结果 

    % 更新状态 
    fprintf('Done
    ')
    
    fprintf('
    ')
    
    end

      

    如果您有任何疑问,请在下面发表评论。 

  • 相关阅读:
    Robin Hood CodeForces
    Arthur and Questions CodeForces
    AC日记——过河卒 洛谷 1002
    加密(模拟)
    AC日记——codevs 1086 栈 (卡特兰数)
    AC日记——搞笑世界杯 codevs 1060(dp)
    AC日记—— codevs 1031 质数环(搜索)
    AC日记——产生数 codevs 1009 (弗洛伊德)(组合数学)
    AC日记——阶乘之和 洛谷 P1009(高精度)
    AC日记——逃跑的拉尔夫 codevs 1026 (搜索)
  • 原文地址:https://www.cnblogs.com/tecdat/p/11729183.html
Copyright © 2011-2022 走看看