【发布时间】:2019-10-31 15:14:30
【问题描述】:
我正在尝试使用输入输出架构实现隐马尔可夫模型,但我找不到任何好的 Python 实现。
任何人都可以分享 Python 包并考虑 HMM 的以下实现。
允许连续排放。 允许协变量的功能(即 I/O HMM 中的自变量)。
此时,我正在努力寻找相同的 python 实现。
我在 hmmlearn 中找不到相关示例。
以下是我测试过的几个库:
hmmlearn:hmmlearn 允许将多个特征传递给发射/观察,但不提供包含协变量(即自变量)的支持。
hmms:不支持添加连续发射的功能,也不支持添加自变量。
IOHMM:我能够使用此库训练 HMM 模型,但在训练模型后找不到用于进行预测的文档。
因此,我正在寻找符合目的的包。
from IOHMM import UnSupervisedIOHMM
from IOHMM import OLS, DiscreteMNL, CrossEntropyMNL, forward_backward
SHMM = UnSupervisedIOHMM(num_states=3, max_EM_iter=200, EM_tol=1e-6)
SHMM.set_models(model_emissions = [OLS(est_stderr=True)],
model_transition=CrossEntropyMNL(solver='lbfgs'),
model_initial=CrossEntropyMNL(solver='lbfgs'))
SHMM.set_inputs(covariates_initial = [], covariates_transition = [], covariates_emissions = [['Insulin']])
SHMM.set_outputs([['Glucose']])
SHMM.set_data([data])
SHMM.train()
经过上述训练,我无法弄清楚如何获得发射概率和隐藏状态序列。
【问题讨论】:
-
如果你能解释你是如何得到输出的,那将会很有帮助。底层逻辑是什么?
-
输出只是排放/观察。
-
hmmlearn 的哪一部分你不明白?这里没有人会为您编写示例,因为 a)我们不为人们编写代码 b)您甚至没有给我们任何迹象表明您自己尝试过
-
嗨,克里斯,感谢您的意见。我已经编辑了这个问题,以便更好地理解这个疑问。
-
根据github.com/Mogeng/IOHMM/blob/master/examples/notebooks/…,您只需要
SHMM.model_emissions即可获得排放量
标签: python hidden-markov-models markov-models