def learn (self, data, header=None, gamma=0.001, verbose=False): " Estimate parameters from data " start = time.time() # mark starting time if header is None: header = [self.class_variable] + self.attributes learner = ParameterLearner(self.bn, data, header) # header contains the order of appearance of variables in file (default is attribute variables list passed in __init__) learner.learn(gamma) # gamma is the prior probabilities parameter end = time.time() # mark ending time if verbose: print 'Elapsed time: %dm%.3fs' % ((end-start)/60.0,(end-start)%60.0)
def run(): " Run this example " begining = time.time() name = "dogproblem" header = \ """ The Dog Problem Network F B |\ / | \ / v v L D-->H Extracted from E. Charniak. Bayesian networks without tears. AI Magazine, 1991. \n """ F = RandomVariable('family_out',['yes','no']) B = RandomVariable('bowel_problem',['yes','no']) L = RandomVariable('lights',['on', 'off']) D = RandomVariable('dog_out',['yes', 'no']) H = RandomVariable('hear_bark',['yes', 'no']) ### Graph Nodes V = [F,B,L,D,H] ### Graph Arcs E = [(F,L), (F,D), (B,D), (D,H)] ### Bayesian network g = DBN(V,E,name,header) markone = time.time() # mark time dat = load_csv(data_filename) names = [F,B,L,D,H] # variable ordering in datafile marktwo = time.time() # mark time learner = ParameterLearner(g,dat,names) learner.learn(0.001) markthree = time.time() # mark time #for v in g.V: # print v.cpt print g end = time.time() print 'Elapsed time on network construction: %dm%.3fs' % ((markone-begining)/60.0,(markone-begining)%60.0) print 'Elapsed time on loading data: %dm%.3fs' % ((marktwo-markone)/60.0,(marktwo-markone)%60.0) print 'Elapsed time on learning: %dm%.3fs' % ((markthree-marktwo)/60.0,(markthree-marktwo)%60.0) print 'Total elapsed time: %dm%.3fs' % ((end-begining)/60.0,(end-begining)%60.0)