<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(維特比)實(shí)現(xiàn)程序(http://en.wikipedia.org/wiki/Viterbi_algorithm),但是3個觀察序列會標(biāo)注出4個狀態(tài)序列。
    下面本人寫的這個Viterbi(維特比)實(shí)現(xiàn)程序就沒這個問題,3個觀察序列就只標(biāo)注出3個狀態(tài)序列。
    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)  編輯  收藏 所屬分類: 機(jī)器學(xué)習(xí)

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产亚洲3p无码一区二区| 亚洲视频免费一区| 222www在线观看免费| 亚洲免费网站在线观看| 国产免费午夜a无码v视频| a级黄色毛片免费播放视频| 亚洲午夜久久久久久尤物| 国产午夜影视大全免费观看| 拍拍拍无挡免费视频网站| 亚洲成人激情小说| 亚洲日本乱码在线观看| 24小时日本在线www免费的| 国产乱子伦精品免费视频| 亚洲欧洲尹人香蕉综合| 国产免费午夜a无码v视频| 亚洲w码欧洲s码免费| 一级做a爰片性色毛片免费网站| 亚洲熟妇无码久久精品| 国产成人毛片亚洲精品| 福利免费观看午夜体检区| 精品免费久久久久国产一区| 亚洲精品乱码久久久久久V| 亚洲成a人片77777老司机| 日本免费的一级v一片| 99视频精品全部免费观看| 特级毛片A级毛片100免费播放| 亚洲综合精品香蕉久久网97| 免费在线看片网站| 欧美日韩国产免费一区二区三区| 国产精品免费一区二区三区| 亚洲色大成网站www尤物| 亚洲综合精品香蕉久久网97| 国产成人综合亚洲AV第一页| 国产美女做a免费视频软件| 97久久免费视频| 成人无码WWW免费视频| 欧洲亚洲综合一区二区三区| 亚洲人成免费网站| 亚洲精品在线播放| 亚洲av色影在线| 亚洲日韩中文字幕在线播放|