隐马尔可夫模型(HMM)

作者: Thinkando | 来源:发表于2018-09-28 10:10 被阅读70次

    马尔可夫链

    image.png
    image.png

    隐马尔可夫

    • 一个直观的例子


      image.png
      image.png
    • 找概率高的那条线
    • 同过观察值(Kiss,Beat,do nothing)推断出女友三天的心情是(happy,happy,unhappy)


      image.png
      image.png
      image.png
      image.png
      image.png
      image.png

    用隐马尔可夫模型建模

    • 给一条序列预测其中的编码区


      image.png
      image.png
      image.png
      image.png
      image.png
    • 这里用log,把 n*c 变成了a+c


    • 找回溯


      image.png
    • 得到最终结果


      image.png

    python 简单实现

    import numpy as np
    
    seq="CGAAAAAATCG"
    # nocoding ,coding
    states = ('N', 'C')
    observations = ('A', 'C', 'G','T')
    # 状态转移矩阵A
    transition_probability = {
        'N': {'N': 0.8, 'C': 0.2},
        'C': {'N': 0.4, 'C': 0.6},
    }
    # 观测概率矩阵B
    emission_probability = {
        'N': {'A': 0.2, 'C': 0.3, 'G': 0.3,'T':0.2},
        'C': {'A': 0.4, 'C': 0.2, 'G': 0.2,'T':0.2},
    }
    
    array =np.zeros((len(states),len(seq)+1))
    
    array[0,0]=0.8
    array[1,0]=0.2
    for i in range(1,array.shape[1]):
        if array[0,i-1]>array[1,i-1]:
            array[0,i]=array[0,i-1]*emission_probability['N'][seq[i-1]]
            array[1,i]=array[0,i-1]*emission_probability['C'][seq[i-1]]
        else:
            array[0, i] = array[1,i-1] * emission_probability['N'][seq[i - 1]]
            array[1, i] = array[1,i-1] * emission_probability['C'][seq[i - 1]]
        print(array)
    list=[]
    for i in range(1,array.shape[1]):
        if array[0,i]>array[1,i]:
            list.append('N')
        else:
            list.append('C')
    
    print(seq)
    print("".join(list))
    
    [[8.000000e-01 2.400000e-01 7.200000e-02 1.440000e-02 5.760000e-03
      2.304000e-03 9.216000e-04 3.686400e-04 1.474560e-04 5.898240e-05
      1.769472e-05 5.308416e-06]
     [2.000000e-01 1.600000e-01 4.800000e-02 2.880000e-02 1.152000e-02
      4.608000e-03 1.843200e-03 7.372800e-04 2.949120e-04 5.898240e-05
      1.179648e-05 3.538944e-06]]
    CGAAAAAATCG
    NNCCCCCCCNN
    

    相关文章

      网友评论

        本文标题:隐马尔可夫模型(HMM)

        本文链接:https://www.haomeiwen.com/subject/mtjuoftx.html