首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中使用hidden_markov时的ValueError

在python中使用hidden_markov时的ValueError
EN

Stack Overflow用户
提问于 2017-04-15 19:16:41
回答 1查看 105关注 0票数 0

当我运行train.hmm()时,我得到以下错误

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

我知道广播错误是什么,我看了一下文档。但是我不能改变矩阵的维度,因为它会在另一个地方弹出一个错误。代码如下所示。

代码语言:javascript
复制
start_probability = np.matrix( '0.5 0.02 0.18 0.05 0.01 0.2 0.04 ')
transition_probability = np.matrix('0.9 0.012 0.012 0.012 0.002 0.05 0.012 \
;  0.03 0.35 0.05 0.05 0.02 0.45 0.05 \
;  0.03 0.05 0.45 0.05 0.02 0.35 0.05 \
;  0.1 0.1 0.1 0.4 0.1 0.1 0.1 \
;  0.1 0.1 0.1 0.1 0.4 0.1 0.1 \
;  0.2 0.05 0.05 0.05 0.05 0.4 0.2 \
;  0.12 0.12 0.12 0.12 0.01 0.12 0.39')
emission_probability = np.matrix(np.ones((7, 20)) * 0.05)

test = hmm(states,possible_observation,start_probability,transition_probability,emission_probability)
observations = ['A', 'S','T','A']
obs4 = ['C', 'A','G']
observation_tuple = []
observation_tuple.extend( [observations,obs4] )
quantities_observations = [10, 20]
num_iter=1000
e,t,s = test.train_hmm(observation_tuple,num_iter,quantities_observations)

错误对应于最后一行。如果我转置start_prbabilityemission_probability矩阵,我会在test = hmm()行本身得到一个错误。

我在这里做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-06-21 03:30:06

hmm_class.py的第349行更改为,

代码语言:javascript
复制
emProbNew = emProbNew/ np.reshape(em_norm.transpose(),[-1,1])

这不是我所知道的最好的解决方案,但我认为作者忽略了一个事实,即Python并不总是能够知道他在这里所说的除法是什么意思。

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

https://stackoverflow.com/questions/43425381

复制
相关文章

相似问题

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