0
我使用scikit-learn的hmmlearn
模塊運行一個簡單的HMM。它適用於完全觀察到的數據,但是當我通過缺失數據進行觀察時失敗。小例子:從scikit學到的hmmlearn中缺少數據
import numpy as np
import hmmlearn
import hmmlearn.hmm as hmm
transmat = np.array([[0.9, 0.1],
[0.1, 0.9]])
emitmat = np.array([[0.5, 0.5],
[0.9, 0.1]])
# this does not work: cannot have missing data
obs = np.array([0, 1] * 5 + [np.nan] * 5)
# this works
#obs = np.array([0, 1] * 5 + [1] * 5)
startprob = np.array([0.5, 0.5])
h = hmm.MultinomialHMM(n_components=2,
startprob=startprob,
transmat=transmat)
h.emissionprob_ = emitmat
print obs, type(obs)
posteriors = h.predict_proba(obs)
print posteriors
如果obs
完全觀察(每一個元素是0或1),它的工作原理,但我想獲得未觀測到的數據點的估計。我試着將它們編碼爲np.nan
或None
,但都不起作用。它給出了錯誤IndexError: arrays used as indices must be of integer (or boolean) type
(在hmm.py", line 430, in _compute_log_likelihood
)。
這怎麼能在hmmlearn中完成?
加入下一個最有可能的序列的推斷將是真正有用的是有計劃添加它? – mvd
目前我們專注於填補0.2.0版本的缺失部分。隨意打開[問題](https://github.com/hmmlearn/hmmlearn)。 –