def train(data, hmm):
    change = 1
    Avgll = a.getAvgLL(data, hmm)
    while change > 1e-4:
        avgll = Avgll
        xi = getXi(data, hmm)
        hmm = reEstimation(xi, data)
        Avgll = a.getAvgLL(data, hmm)
        change = (Avgll - avgll) / abs(Avgll)
        # print "---------------"
        # print "current avgll\tformal avgll"
        # print str(Avgll)+"\t"+str(avgll)
        # print "avgll change ratio"
        # print change
    print "-----------------"
    print Avgll
    print hmm[0]
    print hmm[1]
    print hmm[2]
    print "-----------------"
    return hmm
예제 #2
0
def train(data, hmm):
	change=1
	Avgll=a.getAvgLL(data, hmm)
	while change >10e-4:
		avgll=Avgll
		xi=getXi(data, hmm)
		hmm=reEstimation(xi, data)
		if checker.checkHmm(hmm)==False:
			print "$$$$$$$$$$$$$$$"
			print hmm[0]
			print hmm[1]
			print hmm[2]
			print "$$$$$$$$$$$$$$$"
		Avgll=a.getAvgLL(data, hmm)
		change=(Avgll-avgll)/abs(Avgll)
		print "---------------"
		print "new avgll\told avgll"
		print str(Avgll)+"\t"+str(avgll)
		print "avgll change ratio"
		print change
	return hmm