示例#1
1
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)

示例#2
0
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()
示例#4
0
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:
示例#5
0
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()
示例#6
0
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()
示例#7
0
 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')])
示例#8
0
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)
示例#9
0
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()
示例#10
0
    def testAsia(self):
        from gPy.Examples import asia

        indep = GraphCI(asia.adg(), True, True).independences()
        for k in indep.keys():
            print k, ":", indep[k]
示例#11
0
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])
示例#12
0
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)
示例#13
0
 def testAsia(self):
     from gPy.Examples import asia
     indep = GraphCI(asia.adg(), True, True).independences()
     for k in indep.keys():
         print k, ':', indep[k]
示例#14
0
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()
示例#15
0
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()
示例#16
0
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()