def smoothen(objective_map, decisions, keys=[0, 1]): smoothened = [] for key in keys: objectives = objective_map[key] sk_data = [] for index, (decision, dec_objectives) in enumerate(zip(decisions, objectives)): sk_data.append([str(index)]+dec_objectives) ranks = rdivDemo(sk_data, do_print=False) rank_map = {} for rank, _, x in ranks: meds_iqrs = rank_map.get(rank, [[], []]) med, iqr = median_iqr(x.all) meds_iqrs[0].append(med) meds_iqrs[1].append(iqr) rank_map[rank] = meds_iqrs smooth_objs = {} meds, iqrs = [], [] for rank, _, x in ranks: meds_iqrs = rank_map[rank] med, iqr = round(float(np.mean(meds_iqrs[0])), 2), round(float(np.mean(meds_iqrs[1])), 2) meds.append(med) iqrs.append(iqr) smooth_objs["meds"] = meds smooth_objs["iqrs"] = iqrs smoothened.append(smooth_objs) return smoothened
def scores(self, n=1000, seed_val=None): """ Evaluate the graph n times and return the average value :param n: Number of evals :param seed_val: Random seed to be set :return: The average score """ from utilities.sk import rdivDemo if not seed_val is None: random.seed(seed_val) final = [] for _ in xrange(n): for node in self._tree.nodes: node.value = None final.append(self.score()) final = ["Roots"] + final rdivDemo([final])