@@ 10-88 (lines=79) @@ | ||
7 | import pandas as pd |
|
8 | ||
9 | ||
10 | class Results: |
|
11 | def __init__(self, results_list, opt_pros): |
|
12 | self.results_list = results_list |
|
13 | self.opt_pros = opt_pros |
|
14 | ||
15 | self.objFunc2results = {} |
|
16 | self.search_id2results = {} |
|
17 | ||
18 | def _sort_results_objFunc(self, objective_function): |
|
19 | best_score = -np.inf |
|
20 | best_para = None |
|
21 | search_data = None |
|
22 | ||
23 | search_data_list = [] |
|
24 | ||
25 | for results_ in self.results_list: |
|
26 | nth_process = results_["nth_process"] |
|
27 | ||
28 | opt = self.opt_pros[nth_process] |
|
29 | objective_function_ = opt.experiment.objective_function |
|
30 | search_space_ = opt.s_space() |
|
31 | params = list(search_space_.keys()) |
|
32 | ||
33 | if objective_function_ != objective_function: |
|
34 | continue |
|
35 | ||
36 | if results_["best_score"] > best_score: |
|
37 | best_score = results_["best_score"] |
|
38 | best_para = results_["best_para"] |
|
39 | ||
40 | search_data = results_["search_data"] |
|
41 | search_data["eval_times"] = results_["eval_times"] |
|
42 | search_data["iter_times"] = results_["iter_times"] |
|
43 | ||
44 | search_data_list.append(search_data) |
|
45 | ||
46 | if len(search_data_list) > 0: |
|
47 | search_data = pd.concat(search_data_list) |
|
48 | ||
49 | self.objFunc2results[objective_function] = { |
|
50 | "best_para": best_para, |
|
51 | "best_score": best_score, |
|
52 | "search_data": search_data, |
|
53 | "params": params, |
|
54 | } |
|
55 | ||
56 | def _get_result(self, id_, result_name): |
|
57 | if id_ not in self.objFunc2results: |
|
58 | self._sort_results_objFunc(id_) |
|
59 | ||
60 | search_data = self.objFunc2results[id_][result_name] |
|
61 | ||
62 | return search_data |
|
63 | ||
64 | def best_para(self, id_): |
|
65 | best_para_ = self._get_result(id_, "best_para") |
|
66 | ||
67 | if best_para_ is not None: |
|
68 | return best_para_ |
|
69 | ||
70 | raise ValueError("objective function name not recognized") |
|
71 | ||
72 | def best_score(self, id_): |
|
73 | best_score_ = self._get_result(id_, "best_score") |
|
74 | ||
75 | if best_score_ != -np.inf: |
|
76 | return best_score_ |
|
77 | ||
78 | raise ValueError("objective function name not recognized") |
|
79 | ||
80 | def search_data(self, id_): |
|
81 | search_data = self._get_result(id_, "search_data") |
|
82 | ||
83 | params = self.objFunc2results[id_]["params"] |
|
84 | ||
85 | if search_data is not None: |
|
86 | return search_data |
|
87 | ||
88 | raise ValueError("objective function name not recognized") |
|
89 |
@@ 10-88 (lines=79) @@ | ||
7 | import pandas as pd |
|
8 | ||
9 | ||
10 | class Results: |
|
11 | def __init__(self, results_list, opt_pros): |
|
12 | self.results_list = results_list |
|
13 | self.opt_pros = opt_pros |
|
14 | ||
15 | self.objFunc2results = {} |
|
16 | self.search_id2results = {} |
|
17 | ||
18 | def _sort_results_objFunc(self, objective_function): |
|
19 | best_score = -np.inf |
|
20 | best_para = None |
|
21 | search_data = None |
|
22 | ||
23 | search_data_list = [] |
|
24 | ||
25 | for results_ in self.results_list: |
|
26 | nth_process = results_["nth_process"] |
|
27 | ||
28 | opt = self.opt_pros[nth_process] |
|
29 | objective_function_ = opt.objective_function |
|
30 | search_space_ = opt.s_space() |
|
31 | params = list(search_space_.keys()) |
|
32 | ||
33 | if objective_function_ != objective_function: |
|
34 | continue |
|
35 | ||
36 | if results_["best_score"] > best_score: |
|
37 | best_score = results_["best_score"] |
|
38 | best_para = results_["best_para"] |
|
39 | ||
40 | search_data = results_["search_data"] |
|
41 | search_data["eval_times"] = results_["eval_times"] |
|
42 | search_data["iter_times"] = results_["iter_times"] |
|
43 | ||
44 | search_data_list.append(search_data) |
|
45 | ||
46 | if len(search_data_list) > 0: |
|
47 | search_data = pd.concat(search_data_list) |
|
48 | ||
49 | self.objFunc2results[objective_function] = { |
|
50 | "best_para": best_para, |
|
51 | "best_score": best_score, |
|
52 | "search_data": search_data, |
|
53 | "params": params, |
|
54 | } |
|
55 | ||
56 | def _get_result(self, id_, result_name): |
|
57 | if id_ not in self.objFunc2results: |
|
58 | self._sort_results_objFunc(id_) |
|
59 | ||
60 | search_data = self.objFunc2results[id_][result_name] |
|
61 | ||
62 | return search_data |
|
63 | ||
64 | def best_para(self, id_): |
|
65 | best_para_ = self._get_result(id_, "best_para") |
|
66 | ||
67 | if best_para_ is not None: |
|
68 | return best_para_ |
|
69 | ||
70 | raise ValueError("objective function name not recognized") |
|
71 | ||
72 | def best_score(self, id_): |
|
73 | best_score_ = self._get_result(id_, "best_score") |
|
74 | ||
75 | if best_score_ != -np.inf: |
|
76 | return best_score_ |
|
77 | ||
78 | raise ValueError("objective function name not recognized") |
|
79 | ||
80 | def search_data(self, id_): |
|
81 | search_data = self._get_result(id_, "search_data") |
|
82 | ||
83 | params = self.objFunc2results[id_]["params"] |
|
84 | ||
85 | if search_data is not None: |
|
86 | return search_data |
|
87 | ||
88 | raise ValueError("objective function name not recognized") |
|
89 |