/*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); }