コード例 #1
0
 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)
コード例 #2
0
    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)