def tryModel(self, model): self.assertAlmostEquals(dkl(model,model),0) cbn = CBN.from_bn(model.copy(copy_domain=True)) v = choice(tuple(cbn.variables())) f = cbn[v] dat = rand_factor_data(len(f.data())) change_one = None for i,(a,b) in enumerate(zip(f.data(),dat)): if round(a-b,4) == 0: dat[i] += 10.0 break cbn._replace_factor( v , CPT(Factor(variables=f.variables() ,data=dat ,domain=cbn), v, cpt_force=True)) kl = dkl(model,cbn) self.assert_(kl > 0) kl_ = dkl(cbn,model) self.assert_(kl_ > 0)
def tryModel(self, model): kl = dkl(model,model) self.assert_(is_finite(kl)) cbn = CBN.from_bn(model.copy(copy_domain=True)) v = choice(tuple(cbn.variables())) f = cbn[v] dat = rand_factor_data(len(f.data())) change_one = None for i,(a,b) in enumerate(zip(f.data(),dat)): if round(a-b,4) == 0: dat[i] += uniform(1.0,100.0) cbn._replace_factor( v , CPT(Factor(variables=f.variables() ,data=dat ,domain=cbn), v, cpt_force=True)) ikl = dkl(model,cbn) self.assert_(is_finite(ikl)) self.assert_(ikl >= kl) kl = dkl(cbn,cbn) self.assert_(is_finite(kl)) ikl_ = dkl(cbn,model) self.assert_(ikl_ >= kl)