Ejemplo n.º 1
0
netp.define_nodes()

# compile the net
netp.compile_net()
# enable auto updating
netp.set_autoupdate()
# save the network
netp.save_net('ChestClinicNew.dne')

# prior belief
beliefs = netp.get_node_beliefs(tuberculosis)
belief = beliefs[0]
print 'The probability of tuberculosis is {:f}\n'.format(belief)

# posterior belief
netp.enter_finding(xRay, 0)
beliefs = netp.get_node_beliefs(tuberculosis)
belief = beliefs[0]
print 'Given an abnormal X-ray,'
print '         the probability of tuberculosis is {:f}\n'.format(belief)

netp.enter_finding(visitAsia, 0)
beliefs = netp.get_node_beliefs(tuberculosis)
belief = beliefs[0]
print 'Given an abnormal X-ray and a visit to Asia,'
print '         the probability of tuberculosis is {:f}\n'.format(belief)

netp.enter_finding(cancer, 0)
beliefs = netp.get_node_beliefs(tuberculosis)
belief = beliefs[0]
print 'Given abnormal X-ray, Asia visit, and lung cancer,'
Ejemplo n.º 2
0
netp.define_nodes()

# compile the net
netp.compile_net()
# enable auto updating
netp.set_autoupdate()
# save the network
netp.save_net('ChestClinicNew.dne')

# prior belief
beliefs = netp.get_node_beliefs(tuberculosis)
belief = beliefs[0]
print 'The probability of tuberculosis is {:f}\n'.format(belief)

# posterior belief
netp.enter_finding(xRay, 0)
beliefs = netp.get_node_beliefs(tuberculosis)
belief = beliefs[0]
print 'Given an abnormal X-ray,'
print '         the probability of tuberculosis is {:f}\n'.format(belief)

netp.enter_finding(visitAsia, 0)
beliefs = netp.get_node_beliefs(tuberculosis)
belief = beliefs[0]
print 'Given an abnormal X-ray and a visit to Asia,'
print '         the probability of tuberculosis is {:f}\n'.format(belief)

netp.enter_finding(cancer, 0)
beliefs = netp.get_node_beliefs(tuberculosis)
belief = beliefs[0]
print 'Given abnormal X-ray, Asia visit, and lung cancer,'
Ejemplo n.º 3
0
    dbnet.set_autoupdate()
    # save the network
    dbnet.save_net("Straub2010Ex2.dne")

    # no evidence
    print "Prior Belief:"
    beta0 = []
    for e in earray[1:]:
        beliefs = dbnet.get_node_beliefs(e)
        beta0.append(-stats.norm.ppf(beliefs[1]))
    uhbeliefs0 = dbnet.get_node_beliefs(uh)

    # evidence 1: survive up to year 5, h5=80
    print "Evidence 1: survive up to year 5, h5=80"
    for e in earray[1:6]:
        dbnet.enter_finding(e,0)
    h5ev = 80
    h5 = harray[4]
    h5state = np.searchsorted(h5.bins, h5ev)-1
    dbnet.enter_finding(h5, h5state)
    beta1 = []
    for e in earray[1:]:
        beliefs = dbnet.get_node_beliefs(e)
        beta1.append(-stats.norm.ppf(beliefs[1]))
    uhbeliefs1 = dbnet.get_node_beliefs(uh)


    # evidence 2: survive up to year 5, hi = 30, h5=80
    dbnet.retract_netfindings()
    print "Evidence 2: survive up to year 5, hi=30, h5=80"
    for e in earray[1:6]:
Ejemplo n.º 4
0
# add link: must before define nodes
dbnet.add_link()
# define nodes
dbnet.define_nodes()

# compile the net
dbnet.compile_net()
# enable autoupdate
dbnet.set_autoupdate()
# save the network
dbnet.save_net("BNdecision.dne")


# decision making
# type 1
dbnet.enter_finding(forecast, 0)
utils = dbnet.get_node_expectedutils(umbrella)
print 'If the forecast is sunny, expected utility of {} is {}, of {} is {}\n'.format(
        umbrella.statenames[0], utils[0],
        umbrella.statenames[1], utils[1])

dbnet.retract_netfindings()
dbnet.enter_finding(forecast, 1)
utils = dbnet.get_node_expectedutils(umbrella)
print 'If the forecast is cloudy, expected utility of {} is {}, of {} is {}\n'.format(
        umbrella.statenames[0], utils[0],
        umbrella.statenames[1], utils[1])

dbnet.retract_netfindings()
dbnet.enter_finding(forecast, 2)
utils = dbnet.get_node_expectedutils(umbrella)
Ejemplo n.º 5
0
    dbnet.save_net("Straub2010Ex1.dne")

    # prior belief
    beliefs = dbnet.get_node_beliefs(e)
    print "Prior Belief:"
    for i in xrange(e.nstates()):
        print 'The probability of {} is {:f}'.format(e.statenames[i], beliefs[i])


    # posterior belief 1
    m4measure = 50; m5measure=100
    m4state = np.searchsorted(m4.bins, m4measure)-1
    if m4state<0: m4state=0
    m5state = np.searchsorted(m5.bins, m5measure)-1
    if m5state<0: m5state=0
    dbnet.enter_finding(m4, m4state)
    dbnet.enter_finding(m5, m5state)
    beliefs = dbnet.get_node_beliefs(e)
    print "\nPosterior Belief:"
    for i in xrange(e.nstates()):
        print 'Given m4={:.1f} and m5={:.1f}, the probability of {} is {:f}'.format(m4measure, m5measure, e.statenames[i], beliefs[i])
    r4beliefs = dbnet.get_node_beliefs(r4)
    r5beliefs = dbnet.get_node_beliefs(r5)
    r4rvs = [r4.truncate_rv(pstate) for pstate in np.arange(r4.nstates())]
    r5rvs = [r5.truncate_rv(pstate) for pstate in np.arange(r5.nstates())]
    np.savez('bndiscrete10.npz', r4beliefs=r4beliefs, r5beliefs=r5beliefs,
            r4bins=r4.bins, r5bins=r5.bins, r4rvs=r4rvs, r5rvs=r5rvs)

    # posterior belief 2
    dbnet.retract_nodefindings(m4)
    #dbnet.retract_netfindings()
Ejemplo n.º 6
0
    dbnet.set_autoupdate()
    # save the network
    dbnet.save_net("Straub2010Ex2.dne")

    # no evidence
    print "Prior Belief:"
    beta0 = []
    for e in earray[1:]:
        beliefs = dbnet.get_node_beliefs(e)
        beta0.append(-stats.norm.ppf(beliefs[1]))
    uhbeliefs0 = dbnet.get_node_beliefs(uh)

    # evidence 1: survive up to year 5, h5=80
    print "Evidence 1: survive up to year 5, h5=80"
    for e in earray[1:6]:
        dbnet.enter_finding(e, 0)
    h5ev = 80
    h5 = harray[4]
    h5state = np.searchsorted(h5.bins, h5ev) - 1
    dbnet.enter_finding(h5, h5state)
    beta1 = []
    for e in earray[1:]:
        beliefs = dbnet.get_node_beliefs(e)
        beta1.append(-stats.norm.ppf(beliefs[1]))
    uhbeliefs1 = dbnet.get_node_beliefs(uh)

    # evidence 2: survive up to year 5, hi = 30, h5=80
    dbnet.retract_netfindings()
    print "Evidence 2: survive up to year 5, hi=30, h5=80"
    for e in earray[1:6]:
        dbnet.enter_finding(e, 0)
Ejemplo n.º 7
0
# statesvalues = x1.statenames.astype(float)
x1stats = x1.node_stats(x1beliefs)
print 'The mean of {} is {:f}'.format(x1.name, x1stats[0])
print 'The std of {} is {:f}'.format(x1.name, np.sqrt(x1stats[1]))

x2beliefs = dbnet.get_node_beliefs(x2)
# statesvalues = x2.statenames.astype(float)
x2stats = x2.node_stats(x2beliefs, lmd=lmd)
print 'The mean of {} is {:f}'.format(x2.name, x2stats[0])
print 'The std of {} is {:f}'.format(x2.name, np.sqrt(x2stats[1]))
optx, dummy = x2.fit_stats('lognormal', x2beliefs, lmd=lmd)
print 'The mean of {} by fitting cdf is {:f}'.format(x2.name, optx[0])
print 'The std of {} by fitting cdf is {:f}'.format(x2.name, np.sqrt(optx[1]))

# posterior belief
dbnet.enter_finding(x1, 2)
beliefs = dbnet.get_node_beliefs(y)
print "\nPosterior Belief:"
for i in xrange(y.nstates()):
    print 'The probability of {} is {:f}'.format(y.statenames[i], beliefs[i])

#dbnet.enter_finding(y, 'init')
#x1beliefs = dbnet.get_node_beliefs(x1)
#statesvalues = x1.statenames.astype(float)
#x1stats = x1.node_stats(x1beliefs)
#print "\nPosterior Belief:"
#print 'The posterior mean of {} is {:f}'.format(x1.name, x1stats[0])
#print 'The posterior std of {} is {:f}'.format(x1.name, np.sqrt(x1stats[1]))
#optx, dummy = x1.fit_stats('lognormal', x1beliefs, lmd=lmd)
#print 'The mean of {} by fitting cdf is {:f}'.format(x1.name, optx[0])
#print 'The std of {} by fitting cdf is {:f}'.format(x1.name, np.sqrt(optx[1]))
Ejemplo n.º 8
0
    # prior belief
    beliefs = dbnet.get_node_beliefs(e)
    print "Prior Belief:"
    for i in xrange(e.nstates()):
        print 'The probability of {} is {:f}'.format(e.statenames[i],
                                                     beliefs[i])

    # posterior belief 1
    m4measure = 50
    m5measure = 100
    m4state = np.searchsorted(m4.bins, m4measure) - 1
    if m4state < 0: m4state = 0
    m5state = np.searchsorted(m5.bins, m5measure) - 1
    if m5state < 0: m5state = 0
    dbnet.enter_finding(m4, m4state)
    dbnet.enter_finding(m5, m5state)
    beliefs = dbnet.get_node_beliefs(e)
    print "\nPosterior Belief:"
    for i in xrange(e.nstates()):
        print 'Given m4={:.1f} and m5={:.1f}, the probability of {} is {:f}'.format(
            m4measure, m5measure, e.statenames[i], beliefs[i])
    r4beliefs = dbnet.get_node_beliefs(r4)
    r5beliefs = dbnet.get_node_beliefs(r5)
    r4rvs = [r4.truncate_rv(pstate) for pstate in np.arange(r4.nstates())]
    r5rvs = [r5.truncate_rv(pstate) for pstate in np.arange(r5.nstates())]
    np.savez('bndiscrete10.npz',
             r4beliefs=r4beliefs,
             r5beliefs=r5beliefs,
             r4bins=r4.bins,
             r5bins=r5.bins,
Ejemplo n.º 9
0
    # load net from dbn file
    dbnet = Network('Soliman2014DBN', file='Soliman2014DBN.dne')
    # compile the net
    dbnet.compile_net()
    # enable autoupdate
    dbnet.set_autoupdate()

    m3 = dbnet.find_nodenamed('M3')
    if m3 == 'error':
        print "ERROR: cannot find node M3"
        sys.exit(1)
    m3meaure = 0.6
    m3edges = statename2edges(m3.statenames)
    m3bins = np.hstack((-np.inf, m3edges, np.inf))
    m3state = np.searchsorted(m3bins, m3meaure)-1
    dbnet.enter_finding(m3, m3state)
    a5 = dbnet.find_nodenamed('A5')
    if a5 == 'error':
        print "ERROR: cannot find node A5"
        sys.exit(1)
    a5edges = statename2edges(a5.statenames)
    a5bins = np.hstack((0., a5edges, np.inf))
    a5.set_bins(a5bins)
    beliefs = dbnet.get_node_beliefs(a5)
    dbncdf = a5.node_cdf(a5.bins[1:-1], beliefs, lmd=100.)

    # comparison
    asmpmcmc = np.load('asmpmcmc.npy')
    a = asmpmcmc[-1,:]
    num_bins = 20
    counts, bin_edges = np.histogram(a, bins=num_bins, normed=True)
Ejemplo n.º 10
0
dbnet.add_nodes([weather, forecast, umbrella, satisfy])
# add link: must before define nodes
dbnet.add_link()
# define nodes
dbnet.define_nodes()

# compile the net
dbnet.compile_net()
# enable autoupdate
dbnet.set_autoupdate()
# save the network
dbnet.save_net("BNdecision.dne")

# decision making
# type 1
dbnet.enter_finding(forecast, 0)
utils = dbnet.get_node_expectedutils(umbrella)
print 'If the forecast is sunny, expected utility of {} is {}, of {} is {}\n'.format(
    umbrella.statenames[0], utils[0], umbrella.statenames[1], utils[1])

dbnet.retract_netfindings()
dbnet.enter_finding(forecast, 1)
utils = dbnet.get_node_expectedutils(umbrella)
print 'If the forecast is cloudy, expected utility of {} is {}, of {} is {}\n'.format(
    umbrella.statenames[0], utils[0], umbrella.statenames[1], utils[1])

dbnet.retract_netfindings()
dbnet.enter_finding(forecast, 2)
utils = dbnet.get_node_expectedutils(umbrella)
print 'If the forecast is rainy, expected utility of {} is {}, of {} is {}\n'.format(
    umbrella.statenames[0], utils[0], umbrella.statenames[1], utils[1])