Ошибка Scipy «маскированные массивы не поддерживаются»Python

Программы на Python
Anonymous
Ошибка Scipy «маскированные массивы не поддерживаются»

Сообщение Anonymous »


Я пытаюсь откалибровать модель с помощью pykalman и оптимизатора scipy. По некоторым причинам scipy, похоже, думает, что мой ввод представляет собой замаскированный массив, но это не так. Я добавил код ниже:
k = 0,00000000000001 #малое начальное значение T = np.array([1, 2, 3, 4, 5] , dtype=int) #maturities дельта = 1e-9 х = к переход_ковариант = дельта / (1 - дельта) * np.eye(1) защита объекта (х): к = х[0] Q = (1 - k) *np.eye(1) Z = np.exp(-k*T) Z =Z[:, None] #изменить форму до 2 тусклых переход_ковариант = дельта / (1 - дельта) * np.eye(1) Observe_covariance=0,001*np.eye(len(T)) kf = KalmanFilter(transition_matrices=np.eye(1)*(1-k), матрица_наблюдения = Z, transition_covariance=transition_covariance, Observation_covariance=observation_covariance) lk = kf.loglikelihood(X) # X — мои наблюдаемые данные, 1265 строк × 5 столбцов вернуть -лк x = np.array([k]) k =scipy.optimize.minimize(obj, x, метод = 'TNC')
При запуске оптимизатора scipy я получаю сообщение об ошибке:

-------------------------------------------- ------------------------------- ValueError Traceback (самый последний вызов — последний) в 1 # метод, который работает: TNC, Нелдер-Мид ----> 2 k =scipy.optimize.minimize(obj, x, метод= 'TNC') ~\Anaconda3\lib\site-packages\scipy\optimize\_minimize.py в минимизации (fun, x0, args, метод, jac, hess, hessp, границы, ограничения, tol, обратный вызов, параметры) 618 обратный вызов=обратный вызов, **опции) 619 elif meth == 'tnc': --> 620 return _minimize_tnc(fun, x0, args, jac,bounds, callback=callback, 621 **опции) 622 элиф мет == 'кобыла': ~\Anaconda3\lib\site-packages\scipy\optimize\tnc.py в _minimize_tnc(fun, x0, args, jac, границы, eps, масштаб, смещение, mesg_num, maxCGit, maxiter, eta, Stepmx, точность, minfev, ftol, xtol, gtol, масштабирование, disp, обратный вызов, Finite_diff_rel_step, maxfun, **unknown_options) 373 сообщения = MSG_NONE 374 --> 375 sf = _prepare_scalar_function(fun, x0, jac=jac, args=args, epsilon=eps, 376 Finite_diff_rel_step=finite_diff_rel_step, 377 границ=new_bounds) ~\Anaconda3\lib\site-packages\scipy\optimize\optimize.py в _prepare_scalar_function(fun, x0, jac, args, borders, epsilon, Конечное_diff_rel_step, Hess) 259 # Кэш скалярной функции. Повторное использование удовольствия (x) во время выпускного 260 # расчет уменьшает общие оценки функции. --> 261 sf = ScalarFunction(fun, x0, args, grad, hess, 262 Finite_diff_rel_step, границы, эпсилон=эпсилон) 263 ~\Anaconda3\lib\site-packages\scipy\optimize\_ Differentiable_functions.py в __init__(self, fun, x0, args, grad, hess, Конечное_diff_rel_step, Конечное_diff_bounds, эпсилон) 74 75 self._update_fun_impl = update_fun ---> 76 self._update_fun() 77 78 # Оценка градиента ~\Anaconda3\lib\site-packages\scipy\optimize\_dependent_functions.py в _update_fun(self) 164 защита _update_fun(self): 165, если не self.f_updated: --> 166 self._update_fun_impl() 167 self.f_updated = Истина 168 ~\Anaconda3\lib\site-packages\scipy\optimize\_dependent_functions.py в update_fun() 71 72 защита update_fun(): ---> 73 self.f = fun_wrapped(self.x) 74 75 self._update_fun_impl = update_fun ~\Anaconda3\lib\site-packages\scipy\optimize\_dependent_functions.py в fun_wrapped(x) 68 защита fun_wrapped(x): 69 self.nfev += 1 ---> 70 return fun(x, *args) 71 72 защита update_fun(): в obj(x) 19observation_covariance=observation_covariance) 20 ---> 21 lk = kf.loglikelihood(X) # X — мои наблюдаемые данные, 1016 строк × 17 столбцов 22 возврат -лк ~\Anaconda3\lib\site-packages\pykalman\standard.py в loglikelihood(self, X) 1470 г. 1471 # получить вероятность для каждого временного шага -> 1472 loglikelihoods = _loglikelihoods( 1473 матрицы_наблюдения, смещения_наблюдения, ковариация_наблюдения, 1474 предсказанных_значений_состояния, предсказанных_ковариаций_состояния, Z ~\Anaconda3\lib\site-packages\pykalman\standard.py в _loglikelihoods (матрицы_наблюдений, смещения_наблюдения, ковариация_наблюдения, предсказанные_значения_состояния, ковариации_предсказанного_состояния, наблюдения) 165 + ковариация_наблюдения 166 ) --> 167 loglikelihoods[t] = log_multivariate_normal_density( 168 наблюдений[np.newaxis, :], 169 предсказанное_наблюдение_среднее [np.newaxis, :], ~\Anaconda3\lib\site-packages\pykalman\utils.py в log_multivariate_normal_density(X, означает, ковары, min_covar) 71 ниже = Верно) 72 cv_log_det = 2 * np.sum(np.log(np.diagonal(cv_chol))) ---> 73 cv_sol =solve_triangular(cv_chol, (X - mu).T, low=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) ~\Anaconda3\lib\site-packages\scipy\linalg\basic.py вsolve_triangular(a, b, trans, low, unit_diagonal, overwrite_b, debug, check_finite) 332 333 a1 = _asarray_validated(a, check_finite=check_finite) --> 334 b1 = _asarray_validated(b, check_finite=check_finite) 335, если len(a1.shape) != 2 или a1.shape[0] != a1.shape[1]: 336 поднять ValueError («ожидаемая квадратная матрица») ~\Anaconda3\lib\site-packages\scipy\_lib\_util.py в _asarray_validated(a, check_finite, sparse_ok, Objects_ok, Mask_ok, as_inexact) 259, если не маска_ок: 260, если np.ma.isMaskedArray(a): --> 261 поднять ValueError('маскированные массивы не поддерживаются') 262 toarray = np.asarray_chkfinite, если check_finite, иначе np.asarray 263 а = массив(а) ValueError: маскированные массивы не поддерживаются. Может быть, это связано с обновлением библиотеки scipy? Это сработало с другой настройкой, так что это все, что я могу думать. Мои версии: Питон 3.8.5 Сципи 1.5.2 Пикалман 0.9.5

Спасибо!

Вернуться в «Python»