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, были бы очень полезны.