コード例 #1
0
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)
コード例 #2
0
    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