def test_baum_welch_multiple(number_obs, len_obs, initialisation="random"): print "Baum-Welch from multiple observations." print number_obs, "observations of", len_obs, "length. Init mode:", initialisation h = HMM(['sunny', 'rainy', 'storm', 'cloudy', 'foggy'], ['dry', 'damp', 'wet', 'soaked']) h.random_initialisation() chains = [] for i in xrange(number_obs): chains.append(h.simulate(len_obs)) h2 = deepcopy(h) if initialisation.lower() == "equiprobable": h.equiprobable_initialisation() elif initialisation.lower() in ["no", "none"]: pass else: h.random_initialisation() h.baum_welch_multiple(chains) print "---- generated ----" print h print "---- original ----" print h2 h.integrity_check() h2.integrity_check()
def multiple_baum_welch_test(nStates, nObs, nSims, simLength): print "\n\n\n\n\n##### multiple_baum_welch_test", print "(nStates = %d, nObs = %d, nSims = %d, simLength = %d): " % \ (nStates, nObs, nSims, simLength) test = HMM(['s' + str(i) for i in range(1, nStates + 1)], ['o' + str(i) for i in range(1, nObs + 1)]) test.random_initialisation() print "simple baum-welch.", nStates, "states", nObs, "symbols" print "Original" print test print print "sample simulations.", nSims, "simulations *", simLength, "length" sample = test.simulate(simLength) l = [] for i in range(nSims): obs = test.simulate(simLength) l.append(obs) print "randomising model..." test.random_initialisation() print "baum-welch on the generated simulations..." test.baum_welch_multiple(l) print "result:" print test