scikit учиться GaussianHMM ValueError: вход должен быть квадратный массив

голоса
3

Я работаю с scikit-Learn-х GaussianHMM и я получаю следующее ValueError когда я пытаюсь установить его с некоторыми наблюдениями. вот код, который показывает ошибку:

>>> from sklearn.hmm import GaussianHMM
>>> arr = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> arr
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])
>>> gmm = GaussianHMM ()
>>> gmm.fit (arr)
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/function_base.py:2005: RuntimeWarning: invalid value encountered in divide
  return (dot(X, X.T.conj()) / fact).squeeze()
Traceback (most recent call last):
  File <stdin>, line 1, in <module>
  File /Library/Python/2.7/site-packages/sklearn/hmm.py, line 427, in fit
    framelogprob = self._compute_log_likelihood(seq)
  File /Library/Python/2.7/site-packages/sklearn/hmm.py, line 737, in _compute_log_likelihood
    obs, self._means_, self._covars_, self._covariance_type)
  File /Library/Python/2.7/site-packages/sklearn/mixture/gmm.py, line 58, in log_multivariate_normal_density
    X, means, covars)
  File /Library/Python/2.7/site-packages/sklearn/mixture/gmm.py, line 564, in _log_multivariate_normal_density_diag
    + np.dot(X ** 2, (1.0 / covars).T))
  File /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/matrixlib/defmatrix.py, line 343, in __pow__
    return matrix_power(self, other)
  File /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/matrixlib/defmatrix.py, line 160, in matrix_power
    raise ValueError(input must be a square array)
ValueError: input must be a square array
>>> 

Как я могу это исправить? Кажется, что я даю ему действительные входы. Благодаря!

Задан 16/12/2013 в 17:56
пользователем
На других языках...                            


2 ответов

голоса
3

Вы должны вписываться со списком см официальных примеров :

>>> gmm.fit([arr])
GaussianHMM(algorithm='viterbi', covariance_type='diag', covars_prior=0.01,
      covars_weight=1,
      init_params='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
      means_prior=None, means_weight=0, n_components=1, n_iter=10,
      params='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
      random_state=None, startprob=None, startprob_prior=1.0, thresh=0.01,
      transmat=None, transmat_prior=1.0)
>>> gmm.n_features
3
>>> gmm.n_components
1
Ответил 16/12/2013 в 18:03
источник пользователем

голоса
3

Согласно Документов , gmm.fit(obs)ожидает obsбыть список из массива типа объектов:

obs : list
    List of array-like observation sequences (shape (n_i, n_features)).

Поэтому, попробуйте:

import numpy as np
from sklearn.hmm import GaussianHMM
arr = np.matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
gmm = GaussianHMM()
print(gmm.fit([arr]))

Недоступен марковские модели (СММ) имеют больше не поддерживается на sklearn.

Ответил 16/12/2013 в 18:04
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more