示例#1
0
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()
示例#2
0
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