我知道可以将几个序列放入hmmlearn中,但在我看来,这些序列需要从相同的分布中提取。
有没有可能用来自hmmlearn中不同分布的几个观察序列来拟合GMHMM?
我的用例:我想用来自不同股票的K个金融时间序列来拟合GMHMM,并预测在特定时间产生K个股票价格的市场机制。因此,矩阵输入的维度为N(日期数)×K(股票数)。如果hmmlearn不能做到这一点,请告诉我是否可以在python或R中使用另一个包?感谢您的帮助!
发布于 2019-02-07 19:17:53
我解决你的问题的方法是使用多变量高斯来表示发射概率。
例如:假设K为2,即位置数为2。
在hmmlearn中,K将被编码在均值矩阵的维度中。
看,这个示例Sampling from HMM有一个二维输出。换言之,X.shape = (N,K),其中N是这种情况下样本500的长度,K是输出的维度,其为2。
请注意,作者将每个维度绘制在一个轴上,即x轴绘制第一个维度X:,0,y轴绘制第二个维度X:,1。
要训练模型,请确保X1和X2与示例中采样的X具有相同的形状,并按照here所述形成训练数据集。
总之,通过调整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)https://stackoverflow.com/questions/52141332
复制相似问题