def setUp(self): config.StringParameter('test.param0', 'a param', default='foo') config.StringParameter('test.param1', 'a param', config.oneof('foo', 'bar')) config.IntParameter('test.param2', 'a param', default=20) config.IntParameter('test.param3', 'a param', config.atmost(100)) config.IntParameter('test.param4', 'a param', config.atleast(100)) config.IntParameter('test.param5', 'a param', config.between(10,100)) config.IntParameter('test.param6', 'a param', lambda x: x == 50) config.FloatParameter('test.param7', 'a param', config.between(1.3, 2.7))
def setUp(self): config.StringParameter('test.param0', 'a param', default='foo') config.StringParameter('test.param1', 'a param', config.oneof('foo', 'bar')) config.IntParameter('test.param2', 'a param', default=20) config.IntParameter('test.param3', 'a param', config.atmost(100)) config.IntParameter('test.param4', 'a param', config.atleast(100)) config.IntParameter('test.param5', 'a param', config.between(10, 100)) config.IntParameter('test.param6', 'a param', lambda x: x == 50) config.FloatParameter('test.param7', 'a param', config.between(1.3, 2.7))
class LearnerResult: """Class for storing any and all output of a learner. This is a mutable container for networks and scores. In the future, it will also be the place to collect statistics related to the learning task. """ # # Parameters # _params = ( config.StringParameter( 'result.filename', 'The name of the result output file', default='result.pebl' ), config.StringParameter( 'result.format', 'The format for the pebl result file (pickle or html)', config.oneof('pickle', 'html'), default='pickle' ), config.StringParameter( 'result.outdir', 'Directory for html report.', default='result' ), config.IntParameter( 'result.size', """Number of top-scoring networks to save. Specify 0 to indicate that all scored networks should be saved.""", default=1000 ) ) def __init__(self, learner_=None, size=None): self.data = learner_.data if learner_ else None self.nodes = self.data.variables if self.data else None self.size = size or config.get('result.size') self.networks = [] self.nethashes = {} self.runs = [] def start_run(self): """Indicates that the learner is starting a new run.""" self.runs.append(LearnerRunStats(time.time())) def stop_run(self): """Indicates that the learner is stopping a run.""" self.runs[-1].end = time.time() def add_network(self, net, score): """Add a network and score to the results.""" nets = self.networks nethashes = self.nethashes nethash = hash(net.edges) if self.size == 0 or len(nets) < self.size: if nethash not in nethashes: snet = _ScoredNetwork(copy(net.edges), score) insort(nets, snet) nethashes[nethash] = 1 elif score > nets[0].score and nethash not in nethashes: nethashes.pop(hash(nets[0].edges)) nets.remove(nets[0]) snet = _ScoredNetwork(copy(net.edges), score) insort(nets, snet) nethashes[nethash] = 1 def tofile(self, filename=None): """Save the result to a python pickle file. The result can be later read using the result.fromfile function. """ filename = filename or config.get('result.filename') with open(filename, 'w') as fp: cPickle.dump(self, fp) def tohtml(self, outdir=None): """Create a html report of the result. outdir is a directory to create html files inside. """ if _can_create_html: HtmlFormatter().htmlreport( self, outdir or config.get('result.outdir') ) else: print "Cannot create html reports because some dependencies are missing." @property def posterior(self): """Returns a posterior object for this result.""" return posterior.from_sorted_scored_networks( self.nodes, list(reversed(self.networks)) )
# # Parameters # _pmissingdatahandler = config.StringParameter( 'evaluator.missingdata_evaluator', """ Evaluator to use for handling missing data. Choices include: * gibbs: Gibb's sampling * maxentropy_gibbs: Gibbs's sampling over all completions of the missing values that result in maximum entropy discretization for the variables. * exact: exact enumeration of all possible missing values (only useable when there are few missing values) """, config.oneof('gibbs', 'exact', 'maxentropy_gibbs'), default='gibbs' ) _missingdata_evaluators = { 'gibbs': MissingDataNetworkEvaluator, 'exact': MissingDataExactNetworkEvaluator, 'maxentropy_gibbs': MissingDataMaximumEntropyNetworkEvaluator } def fromconfig(data_=None, network_=None, prior_=None): """Create an evaluator based on configuration parameters. This function will return the correct evaluator based on the relevant configuration parameters.
# # Parameters # _pmissingdatahandler = config.StringParameter( 'evaluator.missingdata_evaluator', """ Evaluator to use for handling missing data. Choices include: * gibbs: Gibb's sampling * maxentropy_gibbs: Gibbs's sampling over all completions of the missing values that result in maximum entropy discretization for the variables. * exact: exact enumeration of all possible missing values (only useable when there are few missing values) """, config.oneof('gibbs', 'exact', 'maxentropy_gibbs'), default='gibbs') _missingdata_evaluators = { 'gibbs': MissingDataNetworkEvaluator, 'exact': MissingDataExactNetworkEvaluator, 'maxentropy_gibbs': MissingDataMaximumEntropyNetworkEvaluator } def fromconfig(data_=None, network_=None, prior_=None): """Create an evaluator based on configuration parameters. This function will return the correct evaluator based on the relevant configuration parameters.