emission_probability[1][0] += 1 if train_data['return'][i] < 0.0 and analysis_data['v'][i] == 1: emission_probability[1][1] += 1 if train_data['return'][i] < 0.0 and analysis_data['v'][i] == 2: emission_probability[1][2] += 1 if train_data['return'][i] < 0.0 and analysis_data['v'][i] == 3: emission_probability[1][3] += 1 emission_probability[0] /= sum(1 for e in train_data['return'] if e >= 0.0) emission_probability[1] /= sum(1 for e in train_data['return'] if e < 0.0) #print(emission_probability) hmm = MultinomialHMM(n_components=n_states) hmm.startprob = start_probability hmm.transmat = transition_probability hmm.emissionprob = emission_probability bob_says = np.array([[0, 2, 1, 1, 2, 0]]).T hmm = hmm.fit(bob_says) logprob, alice_hears = hmm.decode(bob_says, algorithm="viterbi") print("Bob says:", ", ".join(map(lambda x: observations[x], bob_says))) print("Alice hears:", ", ".join(map(lambda x: states[x], alice_hears))) ''' law_data['hmm_states'] = hmm.predict(rets) panel = Figure_Util.Figure() panel.draw(law_data, title='close', subplots=['hmm_states'], figsize=(20, 10)) '''