Ich lerne, wie man das pykalman package benutzt. Beim Durchlaufen des Kalman EM-Beispiels, das Roboterdaten verwendet, ist ein Fehler aufgetreten. Der EM-Beispielcode lautet here. Das Roboterbeispiel enthält eine Beschreibung und einen Code zum Generieren von Daten.Wenn Sie pykalman (Python-Kalman-Filter) verwenden, welchen Datentyp nimmt die loglikelihood-Funktion an?
Als ich diesen Abschnitt laufen:
# Learn good values for parameters named in `em_vars` using the EM algorithm
loglikelihoods = np.zeros(10)
for i in range(len(loglikelihoods)):
kf = kf.em(X=data.observations, n_iter=1)
loglikelihoods[i] = kf.loglikelihood(data.observations)
Ich erhalte den Fehler unten für die kf.loglikelihood (data.observations) -Funktion, sagt Masked Arrays werden nicht unterstützt. Was sollte ich stattdessen als Parameter für kf.loglikelibility verwenden?
C:\Users\Jenny\Anaconda3\lib\site-packages\pykalman-0.9.5-py3.5.egg\pykalman\standard.py in loglikelihood(self, X)
1472 loglikelihoods = _loglikelihoods(
1473 observation_matrices, observation_offsets, observation_covariance,
-> 1474 predicted_state_means, predicted_state_covariances, Z
1475 )
1476
C:\Users\Jenny\Anaconda3\lib\site-packages\pykalman-0.9.5-py3.5.egg\pykalman\standard.py in _loglikelihoods(observation_matrices, observation_offsets, observation_covariance, predicted_state_means, predicted_state_covariances, observations)
168 observation[np.newaxis, :],
169 predicted_observation_mean[np.newaxis, :],
--> 170 predicted_observation_covariance[np.newaxis, :, :]
171 )
172 return loglikelihoods
C:\Users\Jenny\Anaconda3\lib\site-packages\pykalman-0.9.5-py3.5.egg\pykalman\utils.py in log_multivariate_normal_density(X, means, covars, min_covar)
71 lower=True)
72 cv_log_det = 2 * np.sum(np.log(np.diagonal(cv_chol)))
---> 73 cv_sol = solve_triangular(cv_chol, (X - mu).T, lower=True).T
74 log_prob[:, c] = - .5 * (np.sum(cv_sol ** 2, axis=1) + \
75 n_dim * np.log(2 * np.pi) + cv_log_det)
C:\Users\Jenny\Anaconda3\lib\site-packages\scipy\linalg\basic.py in solve_triangular(a, b, trans, lower, unit_diagonal, overwrite_b, debug, check_finite)
156 """
157 a1 = _asarray_validated(a, check_finite=check_finite)
--> 158 b1 = _asarray_validated(b, check_finite=check_finite)
159 if len(a1.shape) != 2 or a1.shape[0] != a1.shape[1]:
160 raise ValueError('expected square matrix')
C:\Users\Jenny\Anaconda3\lib\site-packages\scipy\_lib\_util.py in _asarray_validated(a, check_finite, sparse_ok, objects_ok, mask_ok, as_inexact)
183 if not mask_ok:
184 if np.ma.isMaskedArray(a):
--> 185 raise ValueError('masked arrays are not supported')
186 toarray = np.asarray_chkfinite if check_finite else np.asarray
187 a = toarray(a)
ValueError: masked arrays are not supported