首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HMMLearn:要解压缩的值太多

HMMLearn:要解压缩的值太多
EN

Stack Overflow用户
提问于 2018-04-24 08:51:51
回答 1查看 169关注 0票数 0

我正在尝试使用hmmlearn从隐马尔可夫模型中获得最有可能的隐藏状态序列,给定启动概率、转移概率和发射概率。

我有两个隐藏状态和四个可能的发射值,所以我这样做:

代码语言:javascript
复制
num_states = 2
num_observations = 4
start_probs = np.array([0.2, 0.8])
trans_probs = np.array([[0.75, 0.25], [0.1, 0.9]])
emission_probs = np.array([[0.3, 0.2, 0.2, 0.3], [0.3, 0.3, 0.3, 0.1]])

model = hmm.MultinomialHMM(n_components=num_states)
model.startprob_ = start_probs
model.transmat_ = trans_probs
model.emissionprob_ = emission_probs

seq = np.array([[3, 3, 2, 2]]).T

model.fit(seq)
log_prob, state_seq = model.decode(seq)

我的堆栈跟踪指向decode调用,并抛出以下错误:

代码语言:javascript
复制
ValueError: too many values to unpack (expected 2)

我认为decode (查看文档)返回一个对数概率和状态序列,所以我很困惑。

有什么想法吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-11-12 20:23:31

call model.fit(seq)要求seq是一个列表列表,因为您正确地设置了它。然而,model.decode(seq)要求seq只能是一个列表,而不是列表的列表。因此,

代码语言:javascript
复制
model.fit([[3, 3, 2, 2]])
log_prob, state_seq = model.decode([3, 3, 2, 2])

应该可以在不抛出错误的情况下工作。另请参见here

由函数调用的函数调用的函数抛出错误ValueError: too many values to unpack (expected 2) ...在decode内部。因此,该错误并不意味着decode的返回对象数错误,而是从base.py内部的某个framelogprob.shape返回的错误。更有意义的错误消息会让这里的工作更轻松。我也有同样的问题,这让我抓狂。希望我的帖子能帮助到一些人。

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

https://stackoverflow.com/questions/49991892

复制
相关文章

相似问题

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