训练hmlearn HMM与多类观察序列

时间:2015-08-21 01:43:04

标签: python hidden-markov-models hmmlearn

我有两个训练集(已知类的观察),代表我数据中的两种可能状态。我想让hmmlearn估计一下开始, 过渡和这两个训练集的排放概率。

我的数据是0-1之间的值列表。我已经将数据拆分为粗略的组' A'和' B'使用保守的阈值。我想使用HMM来细化我的数据更改状态的点。

对于单个列车/测试序列X,我会这样做:

X = [0, 1, 1, 1, 0.1, 0.015, 0.01, 0.001, 0.005, 0.001, 0.2, 1, 0.8, 1, 1, 0.3]
states = ["A", "B"]

#Fit model, auto set probabilities
model = hmm.MultinomialHMM(n_components=2, covariance_type="full")
model.fit([X])

#Predict states
Z = model.predict(X)

#Predict a sequence of hidden states based on visible states
logprob, state = model.decode(X, algorithm="viterbi")
print "States:", ", ".join(map(lambda x: states[x], state))
>>> States: A, B, B, B, B, A, A, A, A, A, B, B, B, B, B, B

我想知道如何分别训练A州和B州。

1 个答案:

答案 0 :(得分:0)

拟合方法采用观察序列列表。在您的示例中,假设您的X表示为X1,而另一个组表示为X2,您只需运行:

model.fit([X1,X2])