<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-23  評論-58  文章-0  trackbacks-0
    wikipedia上有個java版的Viterbi(維特比)實現程序(http://en.wikipedia.org/wiki/Viterbi_algorithm),但是3個觀察序列會標注出4個狀態序列。
    下面本人寫的這個Viterbi(維特比)實現程序就沒這個問題,3個觀察序列就只標注出3個狀態序列。
    public class Viterbi
    {
        
    public static void main(String[] args)
        
    {
            String[] states 
    = {"Rainy""Sunny"};
            String[] observations 
    = {"walk""shop""clean"};
            
    double[] start_probability = {0.60.4};
            
    double[][] transition_probability = {{0.70.3}{0.40.6}};
            
    double[][] emission_probability = {{0.10.40.5}{0.60.30.1}};
            forward_viterbi(observations,states,start_probability,transition_probability,emission_probability);
        }

        
        
    public static void  forward_viterbi(String[] observations, String[] states,double[] start_probability, double[][] transition_probability, double[][] emission_probability)
        
    {
            
    int[][] path=new int[observations.length][states.length];
            
    double[][] r=new double[observations.length][states.length];
            
    for(int j=0;j<states.length;j++)
            
    {
                r[
    0][j]=start_probability[j]*emission_probability[j][0];
                path[
    0][j]=0;
            }

            
            
    for(int t=1;t<observations.length;t++)
            
    {
                
    for(int i=0;i<states.length;i++)
                
    {
                    
    double tmp=0;int m=0;
                    
    for(int j=0;j<states.length;j++)
                    
    {
                        
    double tem=r[t-1][j]*transition_probability[j][i]*emission_probability[i][t];
                        
    if(tem>tmp)
                        
    {
                            tmp
    =tem;
                            m
    =j;
                        }

                    }

                    r[t][i]
    =tmp;
                    path[t][i]
    =m;
                }

            }

            
            
    double p=0;int m=0;
            
    for(int i=0;i<r[0].length;i++)
            
    {
                
    if(r[r.length-1][i]>p)
                
    {
                    p
    =r[r.length-1][i];
                    m
    =i;
                }

            }

            
            System.out.println(
    "p="+p);
            
            
    int[] trace=new int[observations.length];
            trace[observations.length
    -1]=m;
            
    for(int t=observations.length-1;t>0;t--)
            
    {
                trace[t
    -1]=path[t][m];
                m
    =path[t][m];
            }

            
            
    for(int i=0;i<trace.length;i++)
                System.out.println(states[trace[i]]);
        }

    }


    posted on 2012-09-07 16:43 nianzai 閱讀(1987) 評論(0)  編輯  收藏 所屬分類: 機器學習

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 中国亚洲呦女专区| 亚洲∧v久久久无码精品| 亚洲免费黄色网址| 久久国产免费一区| 亚洲精品视频在线| 最近免费中文字幕mv电影| 亚洲精品网站在线观看你懂的 | 国产亚洲精品91| 在线免费观看污网站| 亚洲午夜无码久久久久小说| 成人毛片免费观看视频| 亚洲欧洲日产国码久在线| 国产最新凸凹视频免费| 日韩精品免费一线在线观看| 久久亚洲中文字幕精品一区四| 九九久久国产精品免费热6| 国产偷国产偷亚洲高清日韩| 东北美女野外bbwbbw免费| 亚洲国产人成网站在线电影动漫| 91青青青国产在观免费影视| 亚洲嫩草影院在线观看| 成人a视频片在线观看免费| 日韩免费码中文在线观看| 亚洲fuli在线观看| 黄网址在线永久免费观看 | 国产亚洲成人在线播放va| a成人毛片免费观看| 久久精品a亚洲国产v高清不卡| 97国产免费全部免费观看| 亚洲第一成年免费网站| 国产综合精品久久亚洲| 久久亚洲私人国产精品vA| 在线看免费观看AV深夜影院| 337p日本欧洲亚洲大胆人人| 亚洲一级Av无码毛片久久精品| 免费日本一区二区| 亚洲女子高潮不断爆白浆| 国精无码欧精品亚洲一区| 免费电影在线观看网站| 久久国产乱子伦精品免费午夜| 亚洲综合激情九月婷婷|