public new double Run(params Array[] observations)
{
// Convert the generic representation to a vector of multivariate sequences
continuousObservations = new double[observations.Length][][];
for (int i = 0; i < continuousObservations.Length; i++)
continuousObservations[i] = convert(observations[i], model.Dimension);
// Sample array, used to store all observations as a sample vector
// will be useful when fitting the distribution models.
samples = Matrix.Combine(continuousObservations);
weights = new double[samples.Length];
return base.Run(observations);
}
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; }