Ejemplo n.º 1
0
        /*public static void SaveSequenceList(SequenceList seqList, string path)
         * {
         *  Stream writeStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
         *  seqList.Save(writeStream);
         *  writeStream.Close();
         * }
         *
         * public static SequenceList LoadSequenceList(string path)
         * {
         *  Stream readStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
         *  SequenceList seqList = SequenceList.Load(readStream);
         *  readStream.Close();
         *  return seqList;
         * }*/

        public static HiddenMarkovModel <MultivariateNormalDistribution> CreateModelFromFrames(List <List <Frame> > frames)
        {
            SequenceList sequences = Utils.FramesToSequenceList(frames);

            HiddenMarkovModel <MultivariateNormalDistribution> hmm;
            MultivariateNormalDistribution mnd = new MultivariateNormalDistribution(sequences.GetDimensions());

            hmm = new HiddenMarkovModel <MultivariateNormalDistribution>(new Forward(5), mnd);

            var teacher = new BaumWelchLearning <MultivariateNormalDistribution>(hmm);

            teacher.Tolerance      = 0.0001;
            teacher.Iterations     = 0;
            teacher.FittingOptions = new NormalOptions()
            {
                Diagonal       = true, // only diagonal covariance matrices
                Regularization = 1e-5  // avoid non-positive definite errors
            };

            teacher.Run(sequences.GetArray());

            return(hmm);
        }