Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if observations:
obs_mean, obs_cov = self.predict_observation(m, P)
filtered_observations.mean[:,j,:] = obs_mean[...,0]
if covariances:
filtered_observations.cov[:,j,:,:] = obs_cov
filtered_states.mean[:,j,:] = m[...,0]
filtered_states.cov[:,j,:,:] = P
if gains:
result.filtered.gains[:,j,:,:] = K
m, P = self.predict_next(m, P)
if smoothed:
result.smoothed = KalmanFilter.Result()
if states:
result.smoothed.states = empty_gaussian()
# lazy trick to keep last filtered = last smoothed
result.smoothed.states.mean = 1*filtered_states.mean
if covariances:
result.smoothed.states.cov = 1*filtered_states.cov
if observations:
result.smoothed.observations = empty_gaussian(n_states=n_obs)
result.smoothed.observations.mean = 1*filtered_observations.mean
if covariances:
result.smoothed.observations.cov = 1*filtered_observations.cov
if gains:
result.smoothed.gains = np.zeros((n_vars, n_measurements, n_states, n_states))
states = True,
observations = True,
covariances = True,
likelihoods = False,
gains = True,
log_likelihood = False,
verbose = verbose)
if verbose:
print(" * M step")
process_noise = self.em_process_noise(e_step, verbose=verbose)
observation_noise = self.em_observation_noise(e_step, data, verbose=verbose)
initial_value, initial_covariance = em_initial_state(e_step, initial_value)
new_model = KalmanFilter(
self.state_transition,
process_noise,
self.observation_model,
observation_noise)
return new_model.em(data, n_iter-1, initial_value, initial_covariance, verbose)