"""初始状态转化为数字形式""" v = empty(len(map), dtype=float) for e in map: v[label_index[e]] = map[e] return v A = convert_map_to_matrix(transition_probability, states_label_index, states_label_index) print(A) B = convert_map_to_matrix(emission_probability, states_label_index, observations_label_index) print(B) observations_index = convert_observations_to_index(observations, observations_label_index) print(observations_index) pi = convert_map_to_vector(start_probability, states_label_index) print(pi) h = HMM(A, B, pi) # 人为定义的海藻状态序列 obs_seq = ('dry', 'damp', 'soggy') obs_seq_index = convert_observations_to_index(obs_seq, observations_label_index) # 计算P(o|lambda) F = h._forward(obs_seq_index) print("forward: P(O|lambda) = %f" % sum(F[:, -1])) X = h._backward(obs_seq_index) print("backward: P(O|lambda) = %f" % sum(X[:, 0] * pi * B[:, 0]))