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; } }