from gPy.LearningUtils import * from gPy.Examples import asia from gPy.K2 import * from gPy.Models import CBN # generate 500 samples of the Asia network data = CausalWorld(asia) data.observe(5000) # for comparison true_model = asia true_adg = asia.adg() # search for the ADG found_adg = K2(max_parents_family=3).search(data, true_adg.topological_order()) # fit a model to the data using the ADG found_model = CBN.from_adg_data(found_adg, data) print 'True ADG\n', true_adg print 'Found ADG\n', found_adg print 'Structural Hamming distance:',shd(found_adg,true_adg) print 'BDeu scores of fitted models of' print 'found ADG:', bdeu(found_adg,data) print ' true ADG:', bdeu(true_adg,data) print 'KL-divergence of fitted found model from true model:',dkl(true_model,found_model)
from gPy.Examples import asia from gPy.Parameters import CompactFactor from gPy.IO import read_csv import sys data = CompactFactor(read_csv(open(sys.argv[1]))) print asia.bdeu_score(data) def score_adg(adg,data): print '^^^^' for child in adg.vertices(): parents = adg.parents(child) family = parents | set([child]) data_cpt = data.makeFactor(family).makeCPT(child,False) print child, data_cpt.bdeu_score() print 'vvvvv' print adg = asia.adg() score_adg(adg,data) adg.remove_arrow('Smoking','Cancer') score_adg(adg,data)
from gPy.Examples import asia from gPy.Structures import UGraph from Tkinter import Tk root = Tk() root.title("Maximum cardinality search demonstration") asia.adg().moralise().gui_maximum_cardinality_search(root) UGraph(range(1,11),((1,2),(1,3),(2,3),(2,10),(3,10),(4,5), (4,7),(5,6),(5,9),(5,7),(6,7),(6,9), (7,8),(7,9),(8,9),(8,10),(9,10))).gui_maximum_cardinality_search(root) root.mainloop()
from gPy.LearningUtils import * from gPy.Examples import asia from gPy.PC import * from gPy.Models import CBN # generate 500 samples of the Asia network data = CausalWorld(asia) data.observe(500) # for comparison true_model = asia true_adg = asia.adg() # search for the ADG ## the PC algorithm consists of a search for independence relations using a ## test for conditional independence. In this case, the G-squared statistic is ## taken to be distributed as Chi-squared (this is only true asymptotically). ci = PCCI(G2Separator(data)) ## the IC algorithm of Verma & Pearl is used to resolve these conditional ## independencies into a PDAG. Note that this may fail if the found conditional ## independencies are inconsistent with an ADG! pdag = ICPattern(ci) ## Meek's algorithm is used to resolve this PDAG into a particular ADG found_adg = pdag.orient() ## or for short:
from gPy.Examples import asia from Tkinter import Tk from gPy.Utils import scrolled_frame root=Tk() top=scrolled_frame(root,yscroll=500, height=4000) asia.gui_display(top) asia.adg().gui_display(top) for factor in asia: factor *= 1 asia.gui_display(top) asia.adg().moralise().gui_display(top) root.mainloop()
from gPy.Examples import asia from gPy.Structures import GraphicalReducedHyperGraph from Tkinter import Tk hg = asia.hypergraph() hg.red() hg = GraphicalReducedHyperGraph(hg) root=Tk() gr = asia.adg().moralise() gr.add_line('Cancer','Bronchitis') hg2 = gr.hypergraph() hg2.gui_grahams_algorithm(root) root.mainloop()
def setUp(self): self._asia_pdag = asia.adg().essential_graph() self._tetrad_pdag = Graph(vertices=self._asia_pdag.vertices() ,arrows=[('Tuberculosis','TbOrCa'),('Cancer','TbOrCa')] ,lines=[('Smoking','Cancer'),('Smoking','Bronchitis') ,('Bronchitis','Dyspnea')])
from gPy.Examples import asia from gPy.Data import CompactFactor from gPy.IO import read_csv import sys data = CompactFactor(read_csv(open(sys.argv[1]))) print asia.bdeu_score(data) def score_adg(adg,data): print '^^^^' for child in adg.vertices(): parents = adg.parents(child) family = parents | set([child]) data_cpt = data.makeFactor(family).makeCPT(child,False) print child, data_cpt.bdeu_score() print 'vvvvv' print adg = asia.adg() score_adg(adg,data)
from gPy.Examples import asia from Tkinter import * root = Tk() orders =(['VisitAsia', 'Tuberculosis', 'XRay', 'Dyspnea', 'Bronchitis', 'Smoking', 'TbOrCa','Cancer'], ['TbOrCa', 'VisitAsia', 'Tuberculosis', 'XRay', 'Bronchitis', 'Smoking', 'Dyspnea','Cancer']) ig = asia.adg().moralise() for order in orders: ig.copy().gui_triangulate(root,order) root.mainloop()
def testAsia(self): from gPy.Examples import asia indep = GraphCI(asia.adg(), True, True).independences() for k in indep.keys(): print k, ":", indep[k]
import unittest from agm2 import find_minimal_separator from gPy.Examples import asia asia_adg = asia.adg() cases = ( ('VisitAsia','Tuberculosis',None), ('VisitAsia','Smoking',frozenset()), ('Bronchitis','Cancer',frozenset(['Smoking'])) ) cases2 = ( ('Smoking','Dyspnea',2), ('VisitAsia','XRay',1), ('VisitAsia','Dyspnea',1), ) class Testagm2(unittest.TestCase): def test_asia(self): for case in cases: self.assertEqual( find_minimal_separator(asia_adg,case[0],case[1]), case[2]) def test_asia2(self): for case in cases2: sep = find_minimal_separator(asia_adg,case[0],case[1]) self.assertEqual(len(sep),case[2])
import unittest from agm2 import find_minimal_separator from gPy.Examples import asia asia_adg = asia.adg() cases = (('VisitAsia', 'Tuberculosis', None), ('VisitAsia', 'Smoking', frozenset()), ('Bronchitis', 'Cancer', frozenset(['Smoking']))) cases2 = ( ('Smoking', 'Dyspnea', 2), ('VisitAsia', 'XRay', 1), ('VisitAsia', 'Dyspnea', 1), ) class Testagm2(unittest.TestCase): def test_asia(self): for case in cases: self.assertEqual( find_minimal_separator(asia_adg, case[0], case[1]), case[2]) def test_asia2(self): for case in cases2: sep = find_minimal_separator(asia_adg, case[0], case[1]) self.assertEqual(len(sep), case[2]) suite = unittest.makeSuite(Testagm2)
def testAsia(self): from gPy.Examples import asia indep = GraphCI(asia.adg(), True, True).independences() for k in indep.keys(): print k, ':', indep[k]
from gPy.Examples import asia from Tkinter import Tk from gPy.Utils import scrolled_frame root=Tk() top=scrolled_frame(root,yscroll=5000, height=4000) asia.gui_display(top) asia.adg().gui_display(top,width=400,height=300) for factor in asia: factor *= 1 asia.gui_display(top) asia.adg().moralise().gui_display(top,width=400,height=300) root.mainloop()
from gPy.Examples import asia from Tkinter import Tk from gPy.Utils import scrolled_frame root = Tk() top = scrolled_frame(root, yscroll=5000, height=4000) asia.gui_display(top) asia.adg().gui_display(top, width=400, height=300) for factor in asia: factor *= 1 asia.gui_display(top) asia.adg().moralise().gui_display(top, width=400, height=300) root.mainloop()
from gPy.Examples import asia from gPy.Structures import UGraph from Tkinter import Tk root = Tk() root.title("Maximum cardinality search demonstration") asia.adg().moralise().gui_maximum_cardinality_search(root) UGraph(range(1, 11), ((1, 2), (1, 3), (2, 3), (2, 10), (3, 10), (4, 5), (4, 7), (5, 6), (5, 9), (5, 7), (6, 7), (6, 9), (7, 8), (7, 9), (8, 9), (8, 10), (9, 10))).gui_maximum_cardinality_search(root) root.mainloop()