startprob = np.array([1.0, 0.0, 0.0, 0.0])
# The transition matrix
transmat = np.array([[0.5, 0.5, 0. , 0. ],
[0. , 0.7, 0.3, 0. ],
[0. , 0. , 0.7, 0.3],
[0. , 0. , 0. , 1. ]])
# The means of each component
means = np.array([[0.0],
[2.0],
[4.0],
[6.0]])
# The covariance of each component
covars = .5 * np.tile(np.identity(1), (4, 1, 1))
# Build an HMM instance and set parameters
model = hmm.GaussianHMM(n_components=4, covariance_type="diag")
# Instead of fitting it from the data, we directly set the estimated
# parameters, the means and covariance of the components
model.startprob_ = startprob
model.transmat_ = transmat
model.means_ = means
model.covars_ = covars
Я не понимаю, почему я получаю сообщение об ошибке, когда я устанавливаю тип ковариации «diag», когда мои ковариации составляют матрицы 1 на 1. Это прекрасно работает, когда я использую «full» для ковариационного типа, но мне нужно, чтобы этот набор был «diag». Как я могу исправить мой термин «ковары», чтобы это работало?
# Generate samples
X, Z = model.sample(1000)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-30-97d2e44fed38> in <module>
1 # Generate samples
----> 2 X, Z = model.sample(1000)
~/miniconda3/envs/ykp/lib/python3.7/site-packages/hmmlearn/base.py in sample(self, n_samples, random_state)
376 """
377 check_is_fitted(self, "startprob_")
--> 378 self._check()
379
380 if random_state is None:
~/miniconda3/envs/ykp/lib/python3.7/site-packages/hmmlearn/hmm.py in _check(self)
179
180 _utils._validate_covars(self._covars_, self.covariance_type,
--> 181 self.n_components)
182
183 def _init(self, X, lengths=None):
~/miniconda3/envs/ykp/lib/python3.7/site-packages/hmmlearn/_utils.py in _validate_covars(covars, covariance_type, n_components)
22 elif covariance_type == 'diag':
23 if len(covars.shape) != 2:
---> 24 raise ValueError("'diag' covars must have shape "
25 "(n_components, n_dim)")
26 elif np.any(covars <= 0):
ValueError: 'diag' covars must have shape (n_components, n_dim)