我在做Python手勢識別和一個更完整的庫,我發現可以管理隱馬爾可夫模型是nltk。但有些東西我無法理解。初始化HiddenMarkovModelTrainer對象
首先是數據。我有姿態的座標,我已經將它們聚類在8個聚類中(用k-means)。所以這是我的手勢結構:
raw coordinates x,y: [[123,16], [120,16], [115,16], [111,16], [107,16], [103,17], ...]
centroids x,y : [[ 132.375 56.625 ]
[ 122.45454545 30.09090909]
[ 70.5 27.33333333]
...]
labels: [5 6 6 6 6 6 6 2 2 2 2 2 2 4 4 4 ...]
現在我想訓練與鮑姆韋爾奇HMM與我的。所以HiddenMarkovModelTrainer是我的課程。
我在互聯網上發現了一些更多的baum welch實現,但只在Matlab中。這樣做的實現算法tipically需要這樣輸入:
baum-welch(X, alphabet, H)
其中 - X是火車上的數據(在我的情況 - 標籤) - 字母表中數據的可能值(在我的情況 - 0,1 ,2,3,4,5,6,7) - H隱藏狀態
現在我很困惑,因爲在ntlk.HiddenMarkovModelTrainer構造我得給狀態和符號我不要數量」不知道應該是什麼,考慮到訓練X的數據是HiddenMarkovModelTrainer.t的輸入rain_unsupervised()方法,我認爲我的字母表是符號..我不知道要在狀態中放置什麼。
我希望我的解釋清楚,即使我的英語很差。
感謝的回答和鏈接,很clear.sorry但在你的例子,我有一些錯誤。首先,*'set'對象不支持索引*。如果我使用列表而不是集合,我會得到:*''int'object is unsubscriptable'* – nkint
如果我使用像'a','b','c'等觀察序列和符號字符, model.probability(['a','b'])或model.probability('ab')我得到*'IndexError:字符串索引超出範圍'* – nkint
對不起,關於代碼中的錯誤,我的版本的NLTK患者從HMM培訓師的錯誤(http://code.google.com/p/nltk/issues/detail?id=681#c0)...關於使用模型。概率「:這個方法需要一系列標記的標記,因爲它的主要目的是POS標記,所以試着像這樣傳遞你的輸入:'[('a',None),('b',None)]' – wutz