Exemple #1
0
    """初始状态转化为数字形式"""
    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]))