def setUp(self): # create a discrete network G = bayesnet.BNet('Water Sprinkler Bayesian Network') c, s, r, w = [ G.add_v(bayesnet.BVertex(nm, True, 2)) for nm in 'c s r w'.split() ] for ep in [(c, r), (c, s), (r, w), (s, w)]: G.add_e(graph.DirEdge(len(G.e), *ep)) G.InitDistributions() c.setDistributionParameters([0.5, 0.5]) s.setDistributionParameters([0.5, 0.9, 0.5, 0.1]) r.setDistributionParameters([0.8, 0.2, 0.2, 0.8]) w.distribution[:, 0, 0] = [0.99, 0.01] w.distribution[:, 0, 1] = [0.1, 0.9] w.distribution[:, 1, 0] = [0.1, 0.9] w.distribution[:, 1, 1] = [0.0, 1.0] self.c = c self.s = s self.r = r self.w = w self.BNet = G # create a simple continuous network G2 = bayesnet.BNet('Gaussian Bayesian Network') a, b = [ G2.add_v(bayesnet.BVertex(nm, False, 1)) for nm in 'a b'.split() ] for ep in [(a, b)]: G2.add_e(graph.DirEdge(len(G2.e), *ep)) G2.InitDistributions() a.setDistributionParameters(mu=1.0, sigma=1.0) b.setDistributionParameters(mu=1.0, sigma=1.0, wi=2.0) self.a = a self.b = b self.G2 = G2
def setUp(self): # create a discrete network G = bayesnet.BNet('Water Sprinkler Bayesian Network') c, s, r, w = [G.add_v(bayesnet.BVertex(nm, True, 2)) for \ nm in 'c s r w'.split()] for ep in [(c, r), (c, s), (r, w), (s, w)]: G.add_e(graph.DirEdge(len(G.e), *ep)) G.InitDistributions() c.setDistributionParameters([0.5, 0.5]) s.setDistributionParameters([0.5, 0.9, 0.5, 0.1]) r.setDistributionParameters([0.8, 0.2, 0.2, 0.8]) w.distribution[:, 0, 0] = [0.99, 0.01] w.distribution[:, 0, 1] = [0.1, 0.9] w.distribution[:, 1, 0] = [0.1, 0.9] w.distribution[:, 1, 1] = [0.0, 1.0] self.c = c self.s = s self.r = r self.w = w self.BNet = G
def setUp(self): # create the network G = bayesnet.BNet('Asia Bayesian Network') visit, smoking, tuberculosis, bronchitis, lung, ou, Xray, dyspnoea = \ [G.add_v(bayesnet.BVertex( nm, True, 2)) for nm in \ 'visit smoking tuberculosis bronchitis lung ou Xray dyspnoea'.split()] for ep in [(visit,tuberculosis), (tuberculosis, ou), (smoking,lung), \ (lung, ou), (ou, Xray), (smoking, bronchitis), \ (bronchitis, dyspnoea), (ou, dyspnoea)]: G.add_e(graph.DirEdge(len(G.e), *ep)) G.InitDistributions() visit.setDistributionParameters([0.99, 0.01]) tuberculosis.distribution[:, 0] = [0.99, 0.01] tuberculosis.distribution[:, 1] = [0.95, 0.05] smoking.setDistributionParameters([0.5, 0.5]) lung.distribution[:, 0] = [0.99, 0.01] lung.distribution[:, 1] = [0.9, 0.1] ou.distribution[:, 0, 0] = [1, 0] ou.distribution[:, 0, 1] = [0, 1] ou.distribution[:, 1, 0] = [0, 1] ou.distribution[:, 1, 1] = [0, 1] Xray.distribution[:, 0] = [0.95, 0.05] Xray.distribution[:, 1] = [0.02, 0.98] bronchitis.distribution[:, 0] = [0.7, 0.3] bronchitis.distribution[:, 1] = [0.4, 0.6] dyspnoea.distribution[{'bronchitis': 0, 'ou': 0}] = [0.9, 0.1] dyspnoea.distribution[{'bronchitis': 1, 'ou': 0}] = [0.2, 0.8] dyspnoea.distribution[{'bronchitis': 0, 'ou': 1}] = [0.3, 0.7] dyspnoea.distribution[{'bronchitis': 1, 'ou': 1}] = [0.1, 0.9] self.visit = visit self.tuberculosis = tuberculosis self.smoking = smoking self.lung = lung self.ou = ou self.Xray = Xray self.bronchitis = bronchitis self.dyspnoea = dyspnoea self.BNet = G
def testSEM(self): return N = 700 # sample the network N times, delete some data cases = self.BNet.Sample( N) # cases = [{'c':0,'s':1,'r':0,'w':1},{...},...] for i in range(25): case = cases[3 * i] rand = random.sample(['c', 's', 'r', 'w'], 1)[0] case[rand] = '?' for i in range(3): case = cases[3 * i] rand = random.sample(['c', 's', 'r', 'w'], 1)[0] case[rand] = '?' G = bayesnet.BNet('Water Sprinkler Bayesian Network2') c, s, r, w = [G.add_v(bayesnet.BVertex(nm, True, 2)) for nm \ in 'c s r w'.split()] G.InitDistributions() # Test SEMLearning struct_engine = SEMLearningEngine(G) struct_engine.SEMLearningApprox(cases) struct_engine.SaveInFile('./output/testSEM05.txt', G, \ struct_engine.BNet, struct_engine) struct_engine.EMLearning(cases, 10) struct_engine.SaveInFile('./output/testSEM205.txt', G, \ struct_engine.BNet, struct_engine) print '1 OK!' G1 = bayesnet.BNet('Water Sprinkler Bayesian Network2')