首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于连续隐马尔可夫模型的时间序列预测步骤

基于连续隐马尔可夫模型的时间序列预测步骤
EN

Stack Overflow用户
提问于 2018-12-25 13:10:37
回答 1查看 4.9K关注 0票数 11

我正试图用高斯HMM来预测股市。我不知道预测步骤是如何在模型训练之后完成的。我不明白如何准确地预测最可能的状态序列可以帮助预测未来的价值。

提出的问题之一建议这种方法:“使用维特比算法与(部分)序列,以获得最有可能的隐藏状态序列。以发射分布的最后一个隐藏状态,并预测,例如,平均分布(往往是高斯的)。”

在预测了最有可能的状态序列后,我没有明白他说的话。

我使用hmmlearn在python中提供的函数训练了我的模型。我还将Viterbi算法应用于样本上,以预测可能的隐藏状态序列。但在那之后我不知道该怎么办。我不擅长连续的数学,嗯。请告诉我准确的预测是怎么做的。

代码:

代码语言:javascript
运行
复制
import numpy as np 
from hmmlearn import hmm
import pandas as pd

np.random.seed(42)
model = hmm.GaussianHMM(n_components=3, covariance_type="full",algorithm='viterbi')
model.startprob_ = np.array([0.3,0.4,0.6])
model.transmat_ = np.array([[0.7, 0.2, 0.1], [0.3, 0.5, 0.2], [0.3, 0.3, 0.4]])
model.means_ = np.array([[0.0], [3.0], [5.0]])
model.covars_ = np.tile(np.identity(1), (3, 1, 1))

df = pd.read_csv("HistoricalQuotes.csv")
Y = df['close'][2:40]
Y = Y[::-1]
X = np.array(Y)
X = np.reshape(X, (-1,1))

model.fit(X)

Y = df['close'][40:55]
Y = Y[::-1]
X = np.array(Y)

Z =  model.predict(X)
EN

回答 1

Stack Overflow用户

发布于 2018-12-29 15:40:04

你离你的目标不远!

我还将Viterbi算法应用于样本上,以预测可能的隐藏状态序列。

使用Viterbi算法,您实际上可以预测隐藏状态的最有可能的序列。最后一个状态对应于作为输入传递的时间序列的最后一个样本的最可能状态。

为了预测下一个样本,您需要估计哪个状态是下一个最有可能来自的排放。

为此,您可以使用在培训阶段估计的状态转换矩阵,即model.transmat_的更新值。

一旦预测了下一个示例的最有可能的状态,就可以使用与该状态关联的高斯分布。假设您预测了状态K,那么高斯分布的参数将在model.means_[K]model.covars_[K]的更新值中找到(我的意思是在训练阶段更新)。

然后向您提供几种选择:您可以选择从高斯分布中抽取随机样本,也可以选择将新样本分配给高斯平均值。这取决于你的目标和你正在解决的问题。

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

https://stackoverflow.com/questions/53922680

复制
相关文章

相似问题

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