Esempio n. 1
0
        public void TrainHiddenMarkovModel()
        {
            //Trainigset
            double[][] data = (from item in _trainingstore.Items select item.Data.ToArray()).ToArray();
            var indexes = new int[data.Count()];
            for (int i = 0; i < data.Count(); i++)
            {
                indexes[i] = i;
            }

            //Classifier
            var density = new NormalDistribution(1);
            _classifier = new ContinuousSequenceClassifier(_trainingstore.Items.Count, new Ergodic(ObservationLength),
                                                           density);

            //Learn model
            var teacher = new SequenceClassifierLearning(_classifier,
                                                         modelIndex =>
                                                         new ContinuousBaumWelchLearning(_classifier.Models[modelIndex])
                                                             {
                                                                 Tolerance = _tolerance,
                                                                 Iterations = _iterations
                                                             }
                );

            teacher.Run(data, indexes);

            //Determine max likelihoods for all training items
            double maxLikelihood;
            foreach (TrainingItem item in _trainingstore.Items)
            {
                _classifier.Compute(item.Data.ToArray(), out maxLikelihood);
                item.MaxLikelihood = maxLikelihood;
            }
        }
        public void TrainHiddenMarkovModel()
        {
            //Trainigset
            double[][] data    = (from item in _trainingstore.Items select item.Data.ToArray()).ToArray();
            var        indexes = new int[data.Count()];

            for (int i = 0; i < data.Count(); i++)
            {
                indexes[i] = i;
            }

            //Classifier
            var density = new NormalDistribution(1);

            _classifier = new ContinuousSequenceClassifier(_trainingstore.Items.Count, new Ergodic(ObservationLength),
                                                           density);

            //Learn model
            var teacher = new SequenceClassifierLearning(_classifier,
                                                         modelIndex =>
                                                         new ContinuousBaumWelchLearning(_classifier.Models[modelIndex])
            {
                Tolerance  = _tolerance,
                Iterations = _iterations
            }
                                                         );

            teacher.Run(data, indexes);

            //Determine max likelihoods for all training items
            double maxLikelihood;

            foreach (TrainingItem item in _trainingstore.Items)
            {
                _classifier.Compute(item.Data.ToArray(), out maxLikelihood);
                item.MaxLikelihood = maxLikelihood;
            }
        }