hmm.emissions[""][state] = 0.0 def get_precision(table): conteur = 0 for index in range(len(table)): if table[index][1] == table[index][2]: conteur += 1 precision = float(conteur)/(len(table)) return precision table = viterbi.determinerClassesAvecDonneeExternes(test_table, hmm.transitions[""], hmm.transitions, hmm.emissions) print str(viterbi.get_precision(table)*100)[0:4]+"% correct" print "on lance les reestimations:" hmm.iterate() table = viterbi.determinerClassesAvecDonneeExternes(test_table, hmm.transitions[""], hmm.transitions, hmm.emissions) print str(get_precision(table)*100)[0:5]+"% correct" hmm.iterate() table = viterbi.determinerClassesAvecDonneeExternes(test_table, hmm.transitions[""], hmm.transitions, hmm.emissions) print str(get_precision(table)*100)[0:5]+"% correct" print "on applique une perturbation sur la matrice d'emission:" hmm.perturbation(0.00001) print str(viterbi.get_precision(table)*100)[0:4]+"% correct" print "on itere a nouveau:" hmm.iterate() table = viterbi.determinerClassesAvecDonneeExternes(test_table, hmm.transitions[""], hmm.transitions, hmm.emissions) print str(get_precision(table)*100)[0:5]+"% correct"