установка параметров hmm.MultinomialHMM для соответствия hmm с использованием hmmlearn - PullRequest
0 голосов
/ 08 марта 2020

hmm, используемый для генерации t_data, выглядит следующим образом:

                A    B    C
            A  0.2  0.4  0.4
transmat_ = B  0.7  0.1  0.2
            C  0.1  0.9  0.0

                  0    1
              A  0.6  0.4
emissonmat_ = B  0.5  0.5
              C  0.2  0.8

and 

              A   B   C
startprob_ = 0.6 0.1 0.3

t_data - это данные, которые я создал для обучения hmm. Форма t_data (50000, 1) и длины = 100.
В общем, t_data состоит из 100 последовательностей, каждая длиной 5000
Затем я использовал следующий код для оценки модели hmm, используя t_data

    model = hmm.MultinomialHMM(n_components=3,n_iter=500000, tol=0.005,verbose=True)

    # calculate 20 predicted models and their scores and write the models to a file
    pred_model = []
    scores = []
    for i in range(20):
        d = model.fit(t_data,lengths)
        pred_model.append(deepcopy(d))
        scores.append(pred_model[i].score(t_data, lengths))
        print_model(pred_model[i], scores[i], str(j), i)  # prints transmat_, emmisonmat_ and score to a file

    # find the best model using score method
    ind = np.argsort(np.array(scores))
    best_model = pred_model[ind[-1]]
    # pred_model[ind[-1]] is the best model

код выше did работают правильно и дают результаты с разумной точностью, когда n_components было 2, а t_data было 100 последовательностей каждой длиной 500.
Но для n_components = 3 предполагаемые параметры, которые я получаю, очень далеки от исходных параметров. что я могу делать неправильно ??

также любые советы о том, как установить n_iter, tol и лучшую (no_of_sequence, length_of_sequence) комбинацию для t_data, были бы очень полезны.

...