def tune(self, tune_func, logger=None, type=max): """Tune values of parameters Items in tuning grid are iteratively passed to `tune_func` and return value of this function is used as criterion value. It returns optimal value of criterion and points with associated criterion value. If `points` is not None, it is used as default dictionary for returned points. Points is a dictionary with parameter values as keys and criterion value as values. There is a special key 'header' containing names of parameters. """ grid_keys, grid_values = self._getKeysValues() crit = self._criterion for i, values in enumerate(grid_values): new_values = dict(zip(grid_keys, values)) old_crit = self.tunedValueFor(new_values) if old_crit is not None: crit[i] = old_crit continue if logger is not None: self._logDict(logger, 'Setting values of parameters:', new_values) crit[i] = tune_func(**new_values) if logger is not None: logger.info("Criterion value: %s", strnumber(crit[i])) logger.info("\n") tuned_crit, tuned_values = self.optimum(type) if logger is not None: self._logTable(logger) self._logTuned(logger, tuned_crit, tuned_values) return tuned_crit, tuned_values
def tune(self, tune_func, logger=None, type=max): """Tune values of parameters Items in tuning grid are iteratively passed to `tune_func` and return value of this function is used as criterion value. It returns optimal value of criterion and points with associated criterion value. If `points` is not None, it is used as default dictionary for returned points. Points is a dictionary with parameter values as keys and criterion value as values. There is a special key 'header' containing names of parameters. """ grid_keys, grid_values = self._getKeysValues() crit = self._criterion for i, values in enumerate(grid_values): new_values = dict(zip(grid_keys, values)) old_crit = self.oldCriterion(new_values) if old_crit is not None: crit[i] = old_crit continue if logger is not None: self._logDict(logger, 'Setting values of parameters:', new_values) crit[i] = tune_func(**new_values) if logger is not None: logger.info("Criterion value: %s", strnumber(crit[i])) logger.info("\n") tuned_crit, tuned_values = self.optimum(type) if logger is not None: self._logTable(logger) self._logTuned(logger, tuned_crit, tuned_values) return tuned_crit, tuned_values
def _logDict(self, logger, header, d): logger.info(header) logger.info("=" * len(header)) for key, val in d.iteritems(): logger.info(" %s: %s", key, strnumber(val))
def _logDict(self, logger, header, d): logger.info(header) logger.info("="*len(header)) for key, val in d.iteritems(): logger.info(" %s: %s", key, strnumber(val))