是否可以在 hmmlearn 中拟合多变量 GMHMM?



我知道可以将多个序列放入hmmlearn中,但在我看来,这些序列需要从相同的分布中抽取。

是否可以将GMHMM与从hmmlearn中的不同分布中提取的多个观察序列拟合?

我的用例 : 我想将 GMHMM 与来自不同股票的 K 金融时间序列拟合,并预测在特定时间产生 K 股票价格的市场制度。 因此,矩阵输入具有维度 N(日期数(× K(股票数(。 如果 hmmlearn 不能做到这一点,请告诉我是否可以使用 python 或 R 中的另一个包? 感谢您的帮助!

我解决您的问题的方法是使用多变量高斯来表示发射概率。

例如:假设 K 是 2,即位置的数量是 2。

在 hmmlearn 中,K 将被编码为平均矩阵的维度。

请参阅,此示例"从 HMM 采样"具有二维输出。换句话说,X.shape = (N, K(,其中 N 是本例中样本 500 的长度,K 是输出的维度,即 2。

请注意,作者在一个轴上绘制了每个维度,即 x 轴绘制第一个维度 X[:, 0],y 轴绘制第二个维度 X[:, 1]。

若要训练模型,请确保 X1 和 X2 与示例中采样的 X 具有相同的形状,并按照此处所述形成训练数据集。

总之,通过调整 K 而不是 K=2 来使示例适应您的情况,并将其转换为 GMHMM 而不是 GaussianHMM。

# Another example
model = hmm.GaussianHMM(n_components=5, covariance_type="diag", n_iter=100)
K = 3 # Number of sites
model.n_features = K # initialise that the model has size of observations =  K 
# Create a random training sequence (only 1 sequence) with length = 100.
X1 = np.random.randn(100, K) # 100 observation for K sites
model.fit(X1)
# Sample the fitted model
X, Z = model.sample(200)

相关内容

  • 没有找到相关文章

最新更新