如何解决如何在多列上实现隐马尔可夫模型?
我在实施 HMM 模型时遇到了问题。我从一个熊猫数据框开始,我想使用两列来预测隐藏状态。我正在使用 hmmlearn 包。
我正在按照 hmmlearn“使用多个序列”的说明进行操作https://hmmlearn.readthedocs.io/en/latest/tutorial.html#multiple-sequences
我遵循下面的代码,但将 X1 和 X2 设置为我的列
X1 = [[0.5],[1.0],[-1.0],[0.42],[0.24]]
X2 = [[2.4],[4.2],[0.5],[-0.24],[0.24]]
X = np.concatenate([X1,X2])
lengths = [len(X1),len(X2)]
hmm.GaussianHMM(n_components=3).fit(X,lengths)
predictions=model.predict(X)
问题是,当我尝试预测状态而不是组合序列来创建 1 个预测时,我得到了每个观察结果的预测。所以在这个例子中,我想要 5 个观察,但我得到 10 个。有没有办法将数据帧的特征作为自变量合并以获得 1 个组合预测?
解决方法
目前您给模型提供了两个样本序列,每个序列有 5 个观察值,只有一个特征 - 所以总共 10 个观察值。您想要的是具有 5 个观测值和两个特征的单个序列。
应该是这样的:
X = [[0.5,2.4],[1.0,4.2],[-1.0,0.5],[0.42,-0.24],[0.24,0.25]]
lengths = [len(X)]
hmm.GaussianHMM(n_components=3).fit(X,lengths)
predictions=model.predict(X)
那么您将只有五个预测。
如果您想在示例中使用 X
和 X1
构建 X2
变量,您可以使用 zip
:
X = [[x1[0],x2[0]] for x1,x2 in zip(X1,X2)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。