@@ -63,9 +63,10 @@ def create_hyperopt_domain(self):
63
63
# Construct search space, example: {"x": hyperopt.hp.uniform('x', -10, 10), "x2":
64
64
# hyperopt.hp.uniform('x2', -10, 10)}
65
65
hyperopt_search_space = {}
66
+
66
67
for param in self .search_space .params :
67
68
if param .type in [INTEGER , DOUBLE ]:
68
- if param .distribution == api_pb2 .UNIFORM or param . distribution is None :
69
+ if param .distribution in [ api_pb2 .UNIFORM , None ] :
69
70
# Uniform distribution: values are sampled between min and max.
70
71
# If step is defined, we use the quantized version quniform.
71
72
if param .step :
@@ -80,14 +81,10 @@ def create_hyperopt_domain(self):
80
81
param .name , float (param .min ), float (param .max )
81
82
)
82
83
else :
83
- if param .type == INTEGER :
84
- hyperopt_search_space [param .name ] = hyperopt .hp .uniformint (
85
- param .name , float (param .min ), float (param .max )
86
- )
87
- else :
88
- hyperopt_search_space [param .name ] = hyperopt .hp .uniform (
89
- param .name , float (param .min ), float (param .max )
90
- )
84
+ hyperopt_search_space [param .name ] = hyperopt .hp .uniform (
85
+ param .name , float (param .min ), float (param .max )
86
+ )
87
+
91
88
elif param .distribution == api_pb2 .LOG_UNIFORM :
92
89
# Log-uniform distribution: used for parameters that vary exponentially.
93
90
# We convert min and max to their logarithmic scale using math.log, because
@@ -105,28 +102,23 @@ def create_hyperopt_domain(self):
105
102
math .log (float (param .min )),
106
103
math .log (float (param .max )),
107
104
)
105
+
108
106
elif param .distribution == api_pb2 .NORMAL :
109
107
# Normal distribution: used when values are centered around the mean (mu)
110
108
# and spread out by sigma. We calculate mu as the midpoint between
111
109
# min and max, and sigma as (max - min) / 6. This is based on the assumption
112
110
# that 99.7% of the values in a normal distribution fall within ±3 sigma.
113
111
mu = (float (param .min ) + float (param .max )) / 2
114
- # We consider the normal distribution based on the range of ±3 sigma.
115
112
sigma = (float (param .max ) - float (param .min )) / 6
116
-
117
113
if param .step :
118
114
hyperopt_search_space [param .name ] = hyperopt .hp .qnormal (
119
- param .name ,
120
- mu ,
121
- sigma ,
122
- float (param .step ),
115
+ param .name , mu , sigma , float (param .step )
123
116
)
124
117
else :
125
118
hyperopt_search_space [param .name ] = hyperopt .hp .normal (
126
- param .name ,
127
- mu ,
128
- sigma ,
119
+ param .name , mu , sigma
129
120
)
121
+
130
122
elif param .distribution == api_pb2 .LOG_NORMAL :
131
123
# Log-normal distribution: applies when the logarithm
132
124
# of the parameter follows a normal distribution.
@@ -137,21 +129,16 @@ def create_hyperopt_domain(self):
137
129
log_max = math .log (float (param .max ))
138
130
mu = (log_min + log_max ) / 2
139
131
sigma = (log_max - log_min ) / 6
140
-
141
132
if param .step :
142
133
hyperopt_search_space [param .name ] = hyperopt .hp .qlognormal (
143
- param .name ,
144
- mu ,
145
- sigma ,
146
- float (param .step ),
134
+ param .name , mu , sigma , float (param .step )
147
135
)
148
136
else :
149
137
hyperopt_search_space [param .name ] = hyperopt .hp .lognormal (
150
- param .name ,
151
- mu ,
152
- sigma ,
138
+ param .name , mu , sigma
153
139
)
154
- elif param .type == CATEGORICAL or param .type == DISCRETE :
140
+
141
+ elif param .type in [CATEGORICAL , DISCRETE ]:
155
142
hyperopt_search_space [param .name ] = hyperopt .hp .choice (
156
143
param .name , param .list
157
144
)
0 commit comments