// Train the Hidden Markov Model public void TrainHMM() { // First reset it back to default values hmm.initialize(); // Construct a list of symbol sequences representing all the training gestures List <List <int> > seqs = new List <List <int> >(); foreach (Gesture g in gc.gestures) { seqs.Add(q.QuantizeGesture(g)); } // train these equences hmm.train(seqs); // recompute the a priori probability // just compute the mean of all the probabilities of the training gestures DefaultProbability = 0.0f; foreach (Gesture g in gc.gestures) { DefaultProbability += MatchGesture(g); } DefaultProbability /= gc.gestures.Count; }
public static void Main() { bool reverse = false; modshogun.init_shogun_with_defaults(); int N = 1; int M = 512; double pseudo = 1e-5; int order = 3; int gap = 0; string[] fm_train_dna = Load.load_cubes("../data/fm_train_cube.dat"); StringCharFeatures charfeat = new StringCharFeatures(fm_train_dna, EAlphabet.CUBE); StringWordFeatures feats = new StringWordFeatures(charfeat.get_alphabet()); feats.obtain_from_char(charfeat, order - 1, order, gap, reverse); HMM hmm = new HMM(feats, N, M, pseudo); hmm.train(); hmm.baum_welch_viterbi_train(BaumWelchViterbiType.BW_NORMAL); int num_examples = feats.get_num_vectors(); int num_param = hmm.get_num_model_parameters(); for (int i = 0; i < num_examples; i++) { for (int j = 0; j < num_param; j++) { hmm.get_log_derivative(j, i); } } int best_path = 0; int best_path_state = 0; for (int i = 0; i < num_examples; i++) { best_path += (int)hmm.best_path(i); for (int j = 0; j < N; j++) { best_path_state += hmm.get_best_path_state(i, j); } } double[] lik_example = hmm.get_log_likelihood(); double lik_sample = hmm.get_log_likelihood_sample(); modshogun.exit_shogun(); }
internal static ArrayList run(IList para) { bool reverse = false; modshogun.init_shogun_with_defaults(); int N = (int)((int?)para[0]); int M = (int)((int?)para[1]); double pseudo = (double)((double?)para[2]); int order = (int)((int?)para[3]); int gap = (int)((int?)para[4]); string[] fm_train_dna = Load.load_cubes("../data/fm_train_cube.dat"); StringCharFeatures charfeat = new StringCharFeatures(fm_train_dna, CUBE); StringWordFeatures feats = new StringWordFeatures(charfeat.get_alphabet()); feats.obtain_from_char(charfeat, order-1, order, gap, reverse); HMM hmm = new HMM(feats, N, M, pseudo); hmm.train(); hmm.baum_welch_viterbi_train(BW_NORMAL); int num_examples = feats.get_num_vectors(); int num_param = hmm.get_num_model_parameters(); for (int i = 0; i < num_examples; i++) { for(int j = 0; j < num_param; j++) { hmm.get_log_derivative(j, i); } } int best_path = 0; int best_path_state = 0; for(int i = 0; i < num_examples; i++) { best_path += hmm.best_path(i); for(int j = 0; j < N; j++) { best_path_state += hmm.get_best_path_state(i, j); } } DoubleMatrix lik_example = hmm.get_log_likelihood(); double lik_sample = hmm.get_log_likelihood_sample(); ArrayList result = new ArrayList(); result.Add(lik_example); result.Add(lik_sample); result.Add(hmm); modshogun.exit_shogun(); return result; }
public static void Main() { bool reverse = false; modshogun.init_shogun_with_defaults(); int N = 1; int M = 512; double pseudo = 1e-5; int order = 3; int gap = 0; string[] fm_train_dna = Load.load_cubes("../data/fm_train_cube.dat"); StringCharFeatures charfeat = new StringCharFeatures(fm_train_dna, EAlphabet.CUBE); StringWordFeatures feats = new StringWordFeatures(charfeat.get_alphabet()); feats.obtain_from_char(charfeat, order-1, order, gap, reverse); HMM hmm = new HMM(feats, N, M, pseudo); hmm.train(); hmm.baum_welch_viterbi_train(BaumWelchViterbiType.BW_NORMAL); int num_examples = feats.get_num_vectors(); int num_param = hmm.get_num_model_parameters(); for (int i = 0; i < num_examples; i++) for(int j = 0; j < num_param; j++) { hmm.get_log_derivative(j, i); } int best_path = 0; int best_path_state = 0; for(int i = 0; i < num_examples; i++){ best_path += (int)hmm.best_path(i); for(int j = 0; j < N; j++) best_path_state += hmm.get_best_path_state(i, j); } double[] lik_example = hmm.get_log_likelihood(); double lik_sample = hmm.get_log_likelihood_sample(); modshogun.exit_shogun(); }