Code Duplication    Length = 159-163 lines in 2 locations

src/hyperactive/optimizers/backend_stuff/print_results.py 1 location

@@ 11-173 (lines=163) @@
8
indent = "  "
9
10
11
class PrintResults:
12
    def __init__(self, opt_pros, verbosity):
13
        self.opt_pros = opt_pros
14
        self.verbosity = verbosity
15
16
    def _print_times(self, eval_time, iter_time, n_iter):
17
        opt_time = iter_time - eval_time
18
        iterPerSec = n_iter / iter_time
19
20
        print(
21
            indent,
22
            "Evaluation time   :",
23
            eval_time,
24
            "sec",
25
            indent,
26
            "[{} %]".format(round(eval_time / iter_time * 100, 2)),
27
        )
28
        print(
29
            indent,
30
            "Optimization time :",
31
            opt_time,
32
            "sec",
33
            indent,
34
            "[{} %]".format(round(opt_time / iter_time * 100, 2)),
35
        )
36
        if iterPerSec >= 1:
37
            print(
38
                indent,
39
                "Iteration time    :",
40
                iter_time,
41
                "sec",
42
                indent,
43
                "[{} iter/sec]".format(round(iterPerSec, 2)),
44
            )
45
        else:
46
            secPerIter = iter_time / n_iter
47
            print(
48
                indent,
49
                "Iteration time    :",
50
                iter_time,
51
                "sec",
52
                indent,
53
                "[{} sec/iter]".format(round(secPerIter, 2)),
54
            )
55
        print(" ")
56
57
    def align_para_names(self, para_names):
58
        str_lengths = [len(str_) for str_ in para_names]
59
        max_length = max(str_lengths)
60
61
        para_names_align = {}
62
        for para_name, str_length in zip(para_names, str_lengths):
63
            added_spaces = max_length - str_length
64
            para_names_align[para_name] = " " * added_spaces
65
66
        return para_names_align
67
68
    def _print_results(
69
        self,
70
        experiment,
71
        best_score,
72
        best_para,
73
        best_iter,
74
        best_additional_results,
75
        random_seed,
76
    ):
77
        print("\nResults: '{}'".format(experiment.__class__.__name__), " ")
78
        if best_para is None:
79
            print(indent, "Best score:", best_score, " ")
80
            print(indent, "Best parameter set:", best_para, " ")
81
            print(indent, "Best iteration:", best_iter, " ")
82
83
        else:
84
            print(indent, "Best score:", best_score, " ")
85
86
            if best_additional_results:
87
                print(indent, "Best additional results:")
88
                add_results_names = list(best_additional_results.keys())
89
                add_results_names_align = self.align_para_names(
90
                    add_results_names
91
                )
92
93
                for best_additional_result in best_additional_results.keys():
94
                    added_spaces = add_results_names_align[
95
                        best_additional_result
96
                    ]
97
                    print(
98
                        indent,
99
                        indent,
100
                        "'{}'".format(best_additional_result),
101
                        "{}:".format(added_spaces),
102
                        best_additional_results[best_additional_result],
103
                        " ",
104
                    )
105
106
            if best_para:
107
                print(indent, "Best parameter set:")
108
                para_names = list(best_para.keys())
109
                para_names_align = self.align_para_names(para_names)
110
111
                for para_key in best_para.keys():
112
                    added_spaces = para_names_align[para_key]
113
                    print(
114
                        indent,
115
                        indent,
116
                        "'{}'".format(para_key),
117
                        "{}:".format(added_spaces),
118
                        best_para[para_key],
119
                        " ",
120
                    )
121
122
            print(indent, "Best iteration:", best_iter, " ")
123
124
        print(" ")
125
        print(indent, "Random seed:", random_seed, " ")
126
        print(" ")
127
128
    def print_process(self, results, nth_process):
129
        verbosity = self.verbosity
130
        experiment = self.opt_pros[nth_process].experiment
131
        search_space = self.opt_pros[nth_process].s_space.search_space
132
133
        search_data = results["search_data"]
134
135
        try:
136
            best_sample = search_data.iloc[search_data["score"].idxmax()]
137
138
        except TypeError:
139
            logging.warning(
140
                "Warning: Cannot index by location index with a non-integer key"
141
            )
142
143
        else:
144
            best_score = best_sample["score"]
145
            best_values = best_sample[list(search_space.keys())]
146
            best_para = dict(zip(list(search_space.keys()), best_values))
147
            best_additional_results_df = best_sample.drop(
148
                ["score"] + list(search_space.keys())
149
            )
150
            best_additional_results = best_additional_results_df.to_dict()
151
152
            best_iter = results["best_iter"]
153
            eval_times = results["eval_times"]
154
            iter_times = results["iter_times"]
155
            random_seed = results["random_seed"]
156
157
            n_iter = self.opt_pros[nth_process].n_iter
158
159
            eval_time = np.array(eval_times).sum()
160
            iter_time = np.array(iter_times).sum()
161
162
            if "print_results" in verbosity:
163
                self._print_results(
164
                    experiment,
165
                    best_score,
166
                    best_para,
167
                    best_iter,
168
                    best_additional_results,
169
                    random_seed,
170
                )
171
172
            if "print_times" in verbosity:
173
                self._print_times(eval_time, iter_time, n_iter)
174

src_old/hyperactive/print_results.py 1 location

@@ 11-169 (lines=159) @@
8
indent = "  "
9
10
11
class PrintResults:
12
    def __init__(self, opt_pros, verbosity):
13
        self.opt_pros = opt_pros
14
        self.verbosity = verbosity
15
16
    def _print_times(self, eval_time, iter_time, n_iter):
17
        opt_time = iter_time - eval_time
18
        iterPerSec = n_iter / iter_time
19
20
        print(
21
            indent,
22
            "Evaluation time   :",
23
            eval_time,
24
            "sec",
25
            indent,
26
            "[{} %]".format(round(eval_time / iter_time * 100, 2)),
27
        )
28
        print(
29
            indent,
30
            "Optimization time :",
31
            opt_time,
32
            "sec",
33
            indent,
34
            "[{} %]".format(round(opt_time / iter_time * 100, 2)),
35
        )
36
        if iterPerSec >= 1:
37
            print(
38
                indent,
39
                "Iteration time    :",
40
                iter_time,
41
                "sec",
42
                indent,
43
                "[{} iter/sec]".format(round(iterPerSec, 2)),
44
            )
45
        else:
46
            secPerIter = iter_time / n_iter
47
            print(
48
                indent,
49
                "Iteration time    :",
50
                iter_time,
51
                "sec",
52
                indent,
53
                "[{} sec/iter]".format(round(secPerIter, 2)),
54
            )
55
        print(" ")
56
57
    def align_para_names(self, para_names):
58
        str_lengths = [len(str_) for str_ in para_names]
59
        max_length = max(str_lengths)
60
61
        para_names_align = {}
62
        for para_name, str_length in zip(para_names, str_lengths):
63
            added_spaces = max_length - str_length
64
            para_names_align[para_name] = " " * added_spaces
65
66
        return para_names_align
67
68
    def _print_results(
69
        self,
70
        objective_function,
71
        best_score,
72
        best_para,
73
        best_iter,
74
        best_additional_results,
75
        random_seed,
76
    ):
77
        print("\nResults: '{}'".format(objective_function.__name__), " ")
78
        if best_para is None:
79
            print(indent, "Best score:", best_score, " ")
80
            print(indent, "Best parameter set:", best_para, " ")
81
            print(indent, "Best iteration:", best_iter, " ")
82
83
        else:
84
            print(indent, "Best score:", best_score, " ")
85
86
            if best_additional_results:
87
                print(indent, "Best additional results:")
88
                add_results_names = list(best_additional_results.keys())
89
                add_results_names_align = self.align_para_names(add_results_names)
90
91
                for best_additional_result in best_additional_results.keys():
92
                    added_spaces = add_results_names_align[best_additional_result]
93
                    print(
94
                        indent,
95
                        indent,
96
                        "'{}'".format(best_additional_result),
97
                        "{}:".format(added_spaces),
98
                        best_additional_results[best_additional_result],
99
                        " ",
100
                    )
101
102
            if best_para:
103
                print(indent, "Best parameter set:")
104
                para_names = list(best_para.keys())
105
                para_names_align = self.align_para_names(para_names)
106
107
                for para_key in best_para.keys():
108
                    added_spaces = para_names_align[para_key]
109
                    print(
110
                        indent,
111
                        indent,
112
                        "'{}'".format(para_key),
113
                        "{}:".format(added_spaces),
114
                        best_para[para_key],
115
                        " ",
116
                    )
117
118
            print(indent, "Best iteration:", best_iter, " ")
119
120
        print(" ")
121
        print(indent, "Random seed:", random_seed, " ")
122
        print(" ")
123
124
    def print_process(self, results, nth_process):
125
        verbosity = self.verbosity
126
        objective_function = self.opt_pros[nth_process].objective_function
127
        search_space = self.opt_pros[nth_process].s_space.search_space
128
129
        search_data = results["search_data"]
130
131
        try:
132
            best_sample = search_data.iloc[search_data["score"].idxmax()]
133
134
        except TypeError:
135
            logging.warning(
136
                "Warning: Cannot index by location index with a non-integer key"
137
            )
138
139
        else:
140
            best_score = best_sample["score"]
141
            best_values = best_sample[list(search_space.keys())]
142
            best_para = dict(zip(list(search_space.keys()), best_values))
143
            best_additional_results_df = best_sample.drop(
144
                ["score"] + list(search_space.keys())
145
            )
146
            best_additional_results = best_additional_results_df.to_dict()
147
148
            best_iter = results["best_iter"]
149
            eval_times = results["eval_times"]
150
            iter_times = results["iter_times"]
151
            random_seed = results["random_seed"]
152
153
            n_iter = self.opt_pros[nth_process].n_iter
154
155
            eval_time = np.array(eval_times).sum()
156
            iter_time = np.array(iter_times).sum()
157
158
            if "print_results" in verbosity:
159
                self._print_results(
160
                    objective_function,
161
                    best_score,
162
                    best_para,
163
                    best_iter,
164
                    best_additional_results,
165
                    random_seed,
166
                )
167
168
            if "print_times" in verbosity:
169
                self._print_times(eval_time, iter_time, n_iter)
170