def train_N_state_hmms_from_data(filename, num_states, debug=False): """ reads all the data, then split it up into each category, and then builds a separate hmm for each category in data """ dataset = DataSet(filename) category_seqs = split_into_categories(dataset) # Build a hmm for each category in data hmms = {} for cat, seqs in category_seqs.items(): if debug: print "\n\nLearning %s-state HMM for category %s" % ( num_states, cat) model = HMM(range(num_states), dataset.outputs) model.learn_from_observations(seqs, debug) hmms[cat] = model if debug: print "The learned model for %s:" % cat print model return (hmms, dataset)
def task(self): num_states = range(1, MAX_NUM_HIDDEN_STATES) filename = "weather_bos_la.data" dataset = DataSet(filename) category_seqs = split_into_categories(dataset) boston_seqs = category_seqs["boston"] likelihoods = [] for N in num_states: model = HMM(range(N), dataset.outputs) ll = model.learn_from_observations(boston_seqs, False, True) likelihoods.append(ll[-1]) chart = {"chart": {"defaultSeriesType": "line"}, "xAxis": {"title": {"text": "number of hidden states"}, "categories": num_states}, "yAxis": {"title": {"text": "Fraction Correct"}}, "title": {"text": "log likelihood of HMMs" " modeling boston weather"}, "series": [{"name": "boston training data", "data": likelihoods}]} return chart