def _create_model(self, d, k, mode, nframes, emiter): #+++++++++++++++++++++++++++++++++++++++++++++++++ # Generate a model with k components, d dimensions #+++++++++++++++++++++++++++++++++++++++++++++++++ w, mu, va = GM.gen_param(d, k, mode, spread=1.5) gm = GM.fromvalues(w, mu, va) # Sample nframes frames from the model data = gm.sample(nframes) #++++++++++++++++++++++++++++++++++++++++++ # Approximate the models with classical EM #++++++++++++++++++++++++++++++++++++++++++ # Init the model lgm = GM(d, k, mode) gmm = GMM(lgm, 'kmean') gmm.init(data, niter=KM_ITER) self.gm0 = copy.copy(gmm.gm) # The actual EM, with likelihood computation for i in range(emiter): g, tgd = gmm.compute_responsabilities(data) gmm.update_em(data, g) self.data = data self.gm = lgm
def old_em(data, w, mu, va, niter): from scikits.learn.machine.em import EM as OEM, GMM as OGMM, GM as OGM k = w.size k = mu.shape[0] lgm = OGM(d, k) gmm = OGMM(lgm) gmm.gm.w = w.copy() gmm.gm.mu = mu.copy() gmm.gm.va = va.copy() for i in range(niter): g, tgd = gmm.compute_responsabilities(data) gmm.update_em(data, g) return gmm.gm