def test_baum_welch_training_without(self): """Baum-Welch training without known state sequences.""" training_seq = Trainer.TrainingSequence(self.rolls, ()) def stop_training(log_likelihood_change, num_iterations): """Tell the training model when to stop.""" if VERBOSE: print(f"ll change: {log_likelihood_change:f}") if log_likelihood_change < 0.01: return 1 elif num_iterations >= 10: return 1 else: return 0 baum_welch_mm = self.mm_builder.get_markov_model() trainer = Trainer.BaumWelchTrainer(baum_welch_mm) trained_mm = trainer.train([training_seq], stop_training) if VERBOSE: print(trained_mm.transition_prob) print(trained_mm.emission_prob) test_rolls, test_states = generate_rolls(300) predicted_states, prob = trained_mm.viterbi(test_rolls, dice_type_alphabet) if VERBOSE: print(f"Prediction probability: {prob:f}") Utilities.pretty_print_prediction(self.test_rolls, test_states, predicted_states)
states.append(random.choice('123')) sequence = MutableSeq('',DNA()) for i in range(num): sequence.append(random.choice('ACTG')) return states.toseq(),sequence.toseq() n_seq = 30 states = [] sequence = [] seq = [] for i in range(n_seq): num = 10 state2, sequence2 = random_generator(num) states.append(state2) sequence.append(sequence2) seq.append(Trainer.TrainingSequence(sequence[i],states[i])) trainer = Trainer.BaumWelchTrainer(baum_welch) trained = trainer.train(seq, stop_training) print('\n\nProbabilitas Transisi: ',trained.transition_prob) print('\nProbabilitas Emisi: ',trained.emission_prob) prediction, prob = trained.viterbi(sequence[0], state()) print('\nProbabilitas Prediksi: ', prob) Utilities.pretty_print_prediction(sequence[0], states[0], prediction)