Skip to content
Permalink
d54a28a853
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
83 lines (56 sloc) 2.13 KB
from data import BVDataset
from LDSModel import LDS
import pickle
import numpy as np
import random
np.random.seed(420)
random.seed(420)
if(0):
dataSet = BVDataset()
ch=range(0,100,10)
all_train_data = dataSet.getData(ch=ch)
dataSet.plot(all_train_data,title='train-good-data')
# Data to be saved
data = {
'all_train_data': all_train_data
}
# Save data to a file
with open('all_data.pkl', 'wb') as f:
pickle.dump(data, f)
# Load data from the file
with open('all_data.pkl', 'rb') as f:
loaded_data = pickle.load(f)
all_train_data = loaded_data['all_train_data']
train_data_mean=np.mean(all_train_data)
train_data_var=np.var(all_train_data)
# #model = LDS(mu=np.mean(all_train_data),sigma=np.var(all_train_data))
# # Initialize the Kalman filter Model
# n_states=1
# transition_matrix_guess = np.random.rand(n_states, n_states)
# observation_matrix_guess = np.random.rand(1, n_states)
# initial_state_mean_guess = train_data_mean#np.random.rand(n_states)
# initial_state_covariance_guess = train_data_var#np.eye(n_states) * 0.1
# observation_covariance_guess = np.eye(1) * 0.1
# transition_covariance_guess = np.eye(n_states) * 0.1
# Create Kalman Filter
model = LDS(n_states=1)
model.make_initial_guess(all_train_data)
model.EM_init(all_train_data)
# Fit the model using EM algorithm on training data
loglikelihood_old = float('-inf')
loglikelihood_new,_,_ = model.loglikelihood(all_train_data)
stop_diff=0.001
max_iter=100
num_iter=0
while abs(loglikelihood_new - loglikelihood_old) > stop_diff: # Convergence criterion
loglikelihood_old = loglikelihood_new
#model = model.em(all_train_data, n_iter=1,em_vars='all')
model.EM(all_train_data,total_iterations=1)
loglikelihood_new,_,_ = model.loglikelihood(all_train_data)
num_iter=num_iter+1
print(f"iter_{num_iter}, Log-likelihood: {loglikelihood_new}")
if(num_iter>max_iter):
break
# Save the Kalman filter object to a file
with open('LDS_Model.pkl', 'wb') as f:
pickle.dump(model, f)