首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用hidden_markov修复广播状态和发射概率的错误?

如何使用hidden_markov修复广播状态和发射概率的错误?
EN

Stack Overflow用户
提问于 2019-02-18 18:27:41
回答 1查看 44关注 0票数 0

当我在hidden_markov包的文档中应用一个简单的示例时,我遇到了一些问题。在下面的代码中,我尝试了2种状态和3种可能的观察结果(在文档的示例中,有2种可能的观察结果,代码运行良好):

代码语言:javascript
复制
states = ('s', 't')
possible_observation = ('A', 'B', 'C')

# Numpy arrays of the data

start_probability = np.matrix( '0.5 0.5')
transition_probability = np.matrix('0.6 0.4 ; 0.3 0.7')
emission_probability = np.matrix( '0.3 0.2 0.5 ; 0.3 0.1 0.6')

# Initialize class object

test = hmm(states,possible_observation,
           start_probability,
           transition_probability,
           emission_probability)

observations = ('A', 'B','B','A', 'C')
obs4 = ('B', 'C', 'A','B')
observation_tuple = []
observation_tuple.extend( [observations,obs4] )
quantities_observations = [18, 28]
num_iter=1000

e,t,s = test.train_hmm(observation_tuple,num_iter,quantities_observations)

运行代码后,我得到以下错误:

代码语言:javascript
复制
ValueError: operands could not be broadcast together with shapes (2,3) (1,2)

有趣的是,当我尝试3种状态和3种可能的观察(并根据这种变化修改概率矩阵)时,代码工作得很好。要么我遗漏了什么,要么状态的数量和可能的观察值应该总是相等,这是没有意义的。

EN

回答 1

Stack Overflow用户

发布于 2019-02-18 18:43:00

根据上面提供的矩阵,只有两个矩阵的形状为(2,3)(1,2),分别为emission_probabilitystart_probability,错误是矩阵维度不匹配。要匹配矩阵的尺寸,以便它们可以用于计算点积,请执行以下操作。

代码语言:javascript
复制
emission_probability = emission_probability.T
start_probability = start_probability.T

此步骤必须在初始化类对象之前完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54745128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档