Esempio n. 1
0
from pybasicbayes.util.text import progprint_xrange

from pylds.models import DefaultLDS

npr.seed(0)

# Set parameters
D_obs = 1
D_latent = 2
D_input = 0
T = 2000

# Simulate from one LDS
truemodel = DefaultLDS(D_obs, D_latent, D_input)
inputs = np.random.randn(T, D_input)
data, stateseq = truemodel.generate(T, inputs=inputs)

# Fit with another LDS
model = DefaultLDS(D_obs, D_latent, D_input)
model.add_data(data, inputs=inputs)

# Initialize with a few iterations of Gibbs
for _ in progprint_xrange(10):
    model.resample_model()


# Run EM
def update(model):
    model.EM_step()
    return model.log_likelihood()
Esempio n. 2
0
from pybasicbayes.distributions import Regression, DiagonalRegression
from pybasicbayes.util.text import progprint_xrange

from pylds.models import DefaultLDS, LDS

npr.seed(0)

# Model parameters
D_obs = 4
D_latent = 4
T = 1000

# Simulate from an LDS
truemodel = DefaultLDS(D_obs, D_latent)
data, stateseq = truemodel.generate(T)

# Mask off a chunk of data
mask = np.ones_like(data, dtype=bool)
chunksz = 100
for i, offset in enumerate(range(0, T, chunksz)):
    j = i % (D_obs + 1)
    if j < D_obs:
        mask[offset:min(offset + chunksz, T), j] = False
    if j == D_obs:
        mask[offset:min(offset + chunksz, T), :] = False

# Fit with another LDS
model = LDS(dynamics_distn=Regression(nu_0=D_latent + 3,
                                      S_0=D_latent * np.eye(D_latent),
                                      M_0=np.zeros((D_latent, D_latent)),