private static ContinuousHiddenMarkovModel TrainHelper(double[][] sequences) { var hmm = new ContinuousHiddenMarkovModel(States, Symbols); var learner = new ContinuousBaumWelchLearning(hmm) { Tolerance = MinTolerance, Iterations = MaxIterations, FittingOptions = new NormalOptions() { Regularization = RegularisationFactor } }; learner.Run(sequences); return hmm; }
/// <summary> /// Train this current Hidden Markov Model using the provided sequences. /// /// A subset of the features can be selected by the selectFeatures function. /// </summary> /// <param name="sequences">The set of training examples</param> /// <param name="selectFeatures"> /// A (function: Seq -> double[][]) which selects the relevant features from the sequence. /// </param> public void Train(IList<Sequence> sequences, Func<Sequence, double[][]> selectFeatures) { var learner = new ContinuousBaumWelchLearning(CHMM) { Tolerance = MinTolerance, Iterations = MaxIterations, // This is necessary to prevent overfitting: FittingOptions = new NormalOptions {Regularization = RegularisationFactor} }; learner.Run(sequences.Select(selectFeatures).ToArray()); }