from gPy.Examples import asia from gPy.Samplers import BNSampler sampler = BNSampler(asia) sampler.condition({'XRay':'abnormal'}) print "Samples with 'None's are rejected" for i in xrange(100): print sampler.rejection_sample()
from gPy.Examples import asia from gPy.Samplers import BNSampler import sys output = open(sys.argv[1], 'w') sampler = BNSampler(asia) for v in sampler.variables(): print >> output, '%s:%s' % (v, ','.join(asia.values(v))) print >> output, ','.join(sampler.variables()) dkt = {} for i in xrange(300): inst = ','.join(sampler.forward_sample()) try: dkt[inst] += 1 except KeyError: dkt[inst] = 1 for inst, count in dkt.items(): print >> output, '%s,%s' % (inst, count)
from gPy.Examples import asia from gPy.Samplers import BNSampler sampler = BNSampler(asia) sampler.condition({'XRay': 'abnormal'}) for i in xrange(100): print sampler.importance_sample()
from gPy.Examples import asia from gPy.Samplers import BNSampler import sys output = open(sys.argv[1],'w') sampler = BNSampler(asia) for v in sampler.variables(): print >>output, '%s:%s' % (v,','.join(asia.values(v))) print >>output, ','.join(sampler.variables()) for i in xrange(300): print >>output, ','.join(sampler.forward_sample())
from gPy.Examples import asia from gPy.Samplers import BNSampler sampler = BNSampler(asia) cancer_index = sampler.variable_index('Cancer') xray_index = sampler.variable_index('XRay') for size in 10,100,1000,10000: print 'Sample size: ', size for j in range(5): sample = [] for i in xrange(size): sample.append(sampler.forward_sample()) cancer_count, both_count = 0, 0 for inst in sample: if inst[cancer_index] == 'absent': cancer_count += 1 if inst[xray_index] == 'abnormal': both_count += 1 print 'Estimate of P(Cancer=absent): ', cancer_count/float(size) print 'Estimate of P(Cancer=absent,XRay=abnormal): ', both_count/float(size) try: print 'Estimate of P(XRay=abnormal|Cancer=absent): ', both_count/float(cancer_count) except ZeroDivisionError: print '0/0!' print
from gPy.Examples import asia from gPy.Samplers import BNSampler sampler = BNSampler(asia) sampler.condition({'XRay':'abnormal'}) for i in xrange(100): print sampler.importance_sample()
from gPy.Examples import asia from gPy.Samplers import BNSampler sampler = BNSampler(asia) cancer_index = sampler.variable_index('Cancer') xray_index = sampler.variable_index('XRay') for size in 10, 100, 1000, 10000: print 'Sample size: ', size for j in range(5): sample = [] for i in xrange(size): sample.append(sampler.forward_sample()) cancer_count, both_count = 0, 0 for inst in sample: if inst[cancer_index] == 'absent': cancer_count += 1 if inst[xray_index] == 'abnormal': both_count += 1 print 'Estimate of P(Cancer=absent): ', cancer_count / float(size) print 'Estimate of P(Cancer=absent,XRay=abnormal): ', both_count / float( size) try: print 'Estimate of P(XRay=abnormal|Cancer=absent): ', both_count / float( cancer_count) except ZeroDivisionError: print '0/0!' print