簡體   English   中英

將數據擬合到hmm.MultinomialHMM

[英]Fitting data to hmm.MultinomialHMM

我正在嘗試使用hmmlearn庫在給定某些數據的情況下預測最佳序列,但出現錯誤。 我的代碼是:

from hmmlearn import hmm
trans_mat = np.array([[0.2,0.6,0.2],[0.4,0.0,0.6],[0.1,0.2,0.7]])
emm_mat = np.array([[0.2,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.2,0.1,0.1,0.1,0.1],[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.2]])
start_prob = np.array([0.3,0.4,0.3])
X = [3,4,5,6,7]
model = GaussianHMM(n_components = 3, n_iter = 1000)
X = np.array(X)
model.startprob_ = start_prob
model.transmat_ = trans_mat
model.emissionprob_ = emm_mat

# Predict the optimal sequence of internal hidden state
x = model.fit([X])

print(model.decode([X]))

但我收到一條錯誤消息:

Traceback (most recent call last):
  File "hmm_loyalty.py", line 55, in <module>
    x = model.fit([X])
  File "build/bdist.macosx-10.6-x86_64/egg/hmmlearn/base.py", line 421, in fit
  File "build/bdist.macosx-10.6-x86_64/egg/hmmlearn/hmm.py", line 183, in _init
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/cluster/k_means_.py", line 785, in fit
    X = self._check_fit_data(X)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/cluster/k_means_.py", line 758, in _check_fit_data
X.shape[0], self.n_clusters))
ValueError: n_samples=1 should be >= n_clusters=3

任何人都知道這意味着什么以及我可以采取什么措施來解決它?

您的代碼有很多問題:

  1. modelGaussianHMM 您可能想要MultinomialHMM
  2. 輸入X的形狀錯誤。 對於MultinomialHMM X必須具有形狀(n_samples, 1)中,由於觀察是1-d。
  3. 除非需要估計某些模型參數,否則您不希望fit ,在這里不是這種情況。

這是一個工作版本

import numpy as np
from hmmlearn import hmm

model = hmm.MultinomialHMM(n_components=3)
model.startprob_ = np.array([0.3, 0.4, 0.3])
model.transmat_ = np.array([[0.2, 0.6, 0.2],
                            [0.4, 0.0, 0.6],
                            [0.1, 0.2, 0.7]])
model.emissionprob_ = np.array([[0.2, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1],
                                [0.1, 0.1, 0.1, 0.1, 0.2, 0.1, 0.1, 0.1, 0.1],
                                [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.2]])

# Predict the optimal sequence of internal hidden state
X = np.atleast_2d([3, 4, 5, 6, 7]).T
print(model.decode(X))

暫無
暫無

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

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