def test_simple_hmm_learning(self): state_seq = [[0, 1, 1, 0, 1, 0, 1, 1], [0, 0, 1, 0]] obs_seq = [[0, 0, 1, 1, 0, 0, 0, 1], [0, 1, 0, 0]] hmm = HMM(range(2), range(2)) hmm.learn_from_labeled_data(state_seq, obs_seq) print hmm eps = 0.00001 self.assertTrue(max_delta(hmm.initial, [0.750000, 0.250000]) < eps) self.assertTrue(max_delta(hmm.transition, [[0.285714, 0.714286], [0.571429, 0.428571]]) < eps) self.assertTrue(max_delta(hmm.observation, [[0.625000, 0.375000], [0.625000, 0.375000]]) < eps)
def test_bw_simple_weather_model(self): # example from lecture notes 15, p14, just runs one iteration here # just one EM iteration model = baumwelch(self.seqs, 2, 2, 1, True, self.init_model) (transition, observation, initial) = model eps = 0.0001 self.assertTrue(max_delta(initial, [0.646592, 0.353408]) < eps) self.assertTrue(max_delta(transition, [[0.841285, 0.158715], [0.127844, 0.872156]]) < eps) self.assertTrue(max_delta(observation, [[0.731416, 0.268584], [0.426629, 0.573371]]) < eps)