我有两个训练集(已知类的观察)代表我的数据中的两种可能状态。我想让 hmmlearn 从这两个训练集中估计开始、转换和发射概率。
我的数据是 0-1 之间的值列表。我已经使用保守的阈值将数据分成粗略的“A”和“B”组。我想使用 HMM 来细化我的数据更改状态的点。
对于单个训练/测试序列 XI 会这样做:
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。