def main(argv=None): if argv is None: argv = sys.argv usage = "usage: %prog [options] N datafile (pass -h for more info)" parser = OptionParser(usage) parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="Print extra debugging info") (options, args) = parser.parse_args(argv[1:]) if len(args) != 2: print "ERROR: Missing arguments" parser.print_usage() sys.exit(1) num_states = int(args[0]) filename = args[1] filename = normalize_filename(filename) # Read all the data, then split it up into each category # Build models from the category data files hmms, dataset = train_N_state_hmms_from_data( filename, num_states, options.verbose) # See how well we do in classifying test sequences fraction_incorrect = compute_classification_performance( hmms, dataset, options.verbose) print(fraction_incorrect) return 0
def rename_by_taginfo(self, scheme=default_scheme): taginfo = self.extract_taginfo() filename = "%s%s" % ( eval_scheme(scheme, taginfo), self.extension, ) filename_good = normalize_filename(filename) infomsg ("filename_good: %s => %s" % (self.filename, filename_good)) os.rename(self.filename, filename_good) self.filename = filename_good self.basename = os.path.splitext(filename_good)[0]
def train_hmm_from_data(data_filename, debug=False): if debug: print "\n\nReading dataset %s ..." % data_filename data_filename = normalize_filename(data_filename) d = DataSet(data_filename) # if options.verbose: # print d if debug: print "Building an HMM from the full training data..." hmm = HMM(d.states, d.outputs) hmm.learn_from_labeled_data(d.train_state, d.train_output) if debug: print "The model:" print hmm return (hmm, d)
def test_small_robot_dataset(self): data_filename = "robot_small.data" data_filename = normalize_filename(data_filename) hmm, d = train_hmm_from_data(data_filename) err_full = run_viterbi(hmm, d, True) self.assertAlmostEqual(err_full, 2.0 / 9)
def test_normalize_filename(filename: str, result: str): assert util.normalize_filename(filename) == result