Python 如何在多列上实现隐马尔可夫模型?

Python 如何在多列上实现隐马尔可夫模型?,python,pandas,hidden,markov,hmmlearn,Python,Pandas,Hidden,Markov,Hmmlearn,我无法实现HMM模型。我从一个pandas数据框开始,我想用两列来预测隐藏状态。我正在使用hmmlearn软件包 我按照hmmlearn“使用多个序列”的说明操作 我遵循下面的代码,但将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模型。我从一个pandas数据框开始,我想用两列来预测隐藏状态。我正在使用hmmlearn软件包

我按照hmmlearn“使用多个序列”的说明操作

我遵循下面的代码,但将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)

问题是,当我尝试预测状态而不是组合序列来创建一个预测时,我得到的是每个观测值的预测值。因此,在本例中,我想要5个观测值,但得到10个。有没有方法将数据帧的特征合并为独立变量以获得一个组合预测值?

Current你给模型两个样本序列,每个序列有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)
那么你只有五个预测

如果要使用
X1
X2
构建
X
变量(如示例中所示),可以使用
zip

X = [[x1[0], x2[0]] for x1, x2 in zip(X1, X2)]

谢谢!这是有道理的。我尝试了代码,但仍然得到一个形状错误。
X=[[5,4],[1,2],[1,5],[42,24],[24,25]
lengs=[len(X)]
长度=[len X]hmm.gausianhmm(n\u分量=3)。拟合(X,长度)
预测=模型。预测(X)
值错误:无法从形状(10)广播输入数组进入形状(5)
你知道为什么会发生这种情况吗?