簡體   English   中英

如何在多列上實現隱藏馬爾可夫 Model?

[英]How to implement Hidden Markov Model on multiple columns?

我在實現 HMM model 時遇到問題。 我從 pandas dataframe 開始,我想使用兩列來預測隱藏的 state。 我正在使用 hmmlearn package。

我正在按照 hmmlearn 的說明“使用多個序列” https://hmmlearn.readthedocs.io/en/latest/tutorial.html#multiple-sequences

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

問題是,當我嘗試預測 state 而不是組合序列來創建 1 個預測時,我得到了每個觀察的預測。 所以在這個例子中,我想要 5 個觀察結果,但我得到 10 個。有沒有辦法將 dataframe 的特征作為自變量合並以獲得 1 個組合預測?

目前,您正在為 model 提供兩個樣本序列,每個序列有 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)

那么你將只有五個預測。

如果您想像示例中那樣使用X1X2構建X變量,則可以使用zip來實現:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM