scikit-learn GaussianHMM ValueError: la entrada debe ser una matriz cuadrada

Estoy trabajando con GaussianHMM de scikit-learn y obtengo el siguiente ValueError cuando trato de ajustarlo a algunas observaciones. Aquí hay un código que demuestra el error:

>>> 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, XTconj()) / fact).squeeze() Traceback (most recent call last): File "", line 1, in  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 >>> 

¿Cómo podría remediar esto? Parece que le estoy dando entradas válidas. ¡Gracias!

Tienes que encajar con una lista, ver ejemplos oficiales :

 >>> 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 

De acuerdo con los documentos , gmm.fit(obs) espera que obs sea ​​una lista de objetos similares a matrices:

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

Por lo tanto, intente:

 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 ya no admite los modelos ocultos de Markov (HMM).