@@ -32,16 +32,16 @@ def fast_lstsq(
32
32
if weight is None or x .shape [1 ] <= max_iterations * 20 :
33
33
return np .linalg .lstsq (x , y , rcond = None )[0 ]
34
34
else :
35
- return regularised_regression (x , y , 0 , 0 , weight , max_iterations )
35
+ return regularised_regression (x , y , 0.0 , 0. 0 , weight , max_iterations )
36
36
37
37
38
38
def initialise_lasso (
39
39
X : np .ndarray ,
40
40
Y : np .ndarray ,
41
- epsilon : float = 0 ,
41
+ epsilon : float = 0.0 ,
42
42
weight : Optional [np .ndarray ] = None ,
43
43
max_iterations : int = 300 ,
44
- ** kwargs
44
+ ** kwargs ,
45
45
) -> Tuple [np .ndarray , float ]:
46
46
"""Initialise `alpha` and `beta` to be equivalent to LASSO.
47
47
@@ -63,12 +63,12 @@ def initialise_ols(
63
63
Y : np .ndarray ,
64
64
epsilon : float ,
65
65
weight : Optional [np .ndarray ] = None ,
66
- beta_max : float = 20 ,
66
+ beta_max : float = 20.0 ,
67
67
max_approx : float = 1.15 ,
68
68
max_iterations : int = 300 ,
69
69
beta_max_init : float = 2.5 ,
70
70
min_beta_step : float = 1e-8 ,
71
- ** kwargs
71
+ ** kwargs ,
72
72
) -> Tuple [np .ndarray , float ]:
73
73
"""Initialise `alpha` to OLS and `beta` to [slise.optimisation.next_beta][].
74
74
@@ -89,10 +89,8 @@ def initialise_ols(
89
89
alpha = fast_lstsq (X , Y , weight , max_iterations )
90
90
epsilon = epsilon ** 2
91
91
beta_max = min (beta_max , beta_max_init ) / epsilon
92
- residuals = (Y - X @ alpha ) ** 2
93
- beta = next_beta (
94
- residuals , epsilon , 0 , weight , beta_max , log (max_approx ), min_beta_step
95
- )
92
+ r2 = (Y - X @ alpha ) ** 2
93
+ beta = next_beta (r2 , epsilon , 0 , weight , beta_max , log (max_approx ), min_beta_step )
96
94
return alpha , beta
97
95
98
96
@@ -101,11 +99,11 @@ def initialise_zeros(
101
99
Y : np .ndarray ,
102
100
epsilon : float ,
103
101
weight : Optional [np .ndarray ] = None ,
104
- beta_max : float = 20 ,
102
+ beta_max : float = 20.0 ,
105
103
max_approx : float = 1.15 ,
106
104
beta_max_init : float = 2.5 ,
107
105
min_beta_step : float = 1e-8 ,
108
- ** kwargs
106
+ ** kwargs ,
109
107
) -> Tuple [np .ndarray , float ]:
110
108
"""Initialise `alpha` to 0 and `beta` to [slise.optimisation.next_beta][].
111
109
@@ -136,7 +134,7 @@ def initialise_fixed(
136
134
Y : np .ndarray ,
137
135
epsilon : float ,
138
136
weight : Optional [np .ndarray ] = None ,
139
- beta_max : float = 20 ,
137
+ beta_max : float = 20.0 ,
140
138
max_approx : float = 1.15 ,
141
139
beta_max_init : float = 2.5 ,
142
140
min_beta_step : float = 1e-8 ,
@@ -163,14 +161,8 @@ def initialise_fixed(
163
161
epsilon = epsilon ** 2
164
162
beta_max = min (beta_max , beta_max_init ) / epsilon
165
163
alpha = init
166
- beta = next_beta (
167
- (X @ alpha - Y ) ** 2 ,
168
- epsilon ,
169
- 0 ,
170
- weight ,
171
- beta_max ,
172
- log (max_approx ),
173
- )
164
+ r2 = (X @ alpha - Y ) ** 2
165
+ beta = next_beta (r2 , epsilon , 0 , weight , beta_max , log (max_approx ))
174
166
return alpha , beta
175
167
176
168
@@ -196,14 +188,14 @@ def initialise_candidates(
196
188
Y : np .ndarray ,
197
189
epsilon : float ,
198
190
weight : Optional [np .ndarray ] = None ,
199
- beta_max : float = 20 ,
191
+ beta_max : float = 20.0 ,
200
192
max_approx : float = 1.15 ,
201
193
pca_treshold : int = 10 ,
202
194
num_init : Optional [int ] = None ,
203
195
max_iterations : int = 300 ,
204
196
beta_max_init : float = 2.5 ,
205
197
min_beta_step : float = 1e-8 ,
206
- ** kwargs
198
+ ** kwargs ,
207
199
) -> Tuple [np .ndarray , float ]:
208
200
"""Generate a number (num_init) of candidates, using PCA to shrink the random subsets.
209
201
Then select the best one to be `alpha` and `beta` to be the corresponding [slise.optimisation.next_beta][].
@@ -236,19 +228,19 @@ def initialise_candidates(
236
228
alpha = np .zeros (X .shape [1 ])
237
229
residuals = Y ** 2
238
230
beta = next_beta (residuals , epsilon , 0 , weight , beta_max , max_approx , min_beta_step )
239
- loss = loss_residuals (alpha , residuals , epsilon , beta , 0 , 0 , weight )
231
+ loss = loss_residuals (alpha , residuals , epsilon , beta , 0.0 , 0. 0 , weight )
240
232
# Find the candidate with the best loss for the next_beta
241
233
for i in range (num_init ):
242
234
try :
243
235
model = __create_candidate (X , Y , weight , pca_treshold , max_iterations )
244
- residuals2 = (Y - X @ model ) ** 2
245
- loss2 = loss_residuals (model , residuals2 , epsilon , beta , 0 , 0 , weight )
236
+ r2 = (Y - X @ model ) ** 2
237
+ loss2 = loss_residuals (model , r2 , epsilon , beta , 0.0 , 0. 0 , weight )
246
238
if loss2 < loss :
247
239
alpha = model
248
240
beta = next_beta (
249
- residuals2 , epsilon , 0 , weight , beta_max , max_approx , min_beta_step
241
+ r2 , epsilon , 0. 0 , weight , beta_max , max_approx , min_beta_step
250
242
)
251
- loss = loss_residuals (model , residuals2 , epsilon , beta , 0 , 0 , weight )
243
+ loss = loss_residuals (model , r2 , epsilon , beta , 0.0 , 0. 0 , weight )
252
244
except np .linalg .LinAlgError :
253
245
pass
254
246
return alpha , beta
@@ -264,7 +256,7 @@ def __create_candidate2(
264
256
X = X [sel , :]
265
257
Y = Y [sel ]
266
258
with catch_warnings (record = False ):
267
- reg = regularised_regression (X , Y , 1e-8 , 0 , max_iterations )
259
+ reg = regularised_regression (X , Y , 1e-8 , 0.0 , max_iterations = max_iterations )
268
260
return reg
269
261
270
262
@@ -273,13 +265,13 @@ def initialise_candidates2(
273
265
Y : np .ndarray ,
274
266
epsilon : float ,
275
267
weight : Optional [np .ndarray ] = None ,
276
- beta_max : float = 20 ,
268
+ beta_max : float = 20.0 ,
277
269
max_approx : float = 1.15 ,
278
270
num_init : Optional [int ] = None ,
279
271
max_iterations : int = 300 ,
280
272
beta_max_init : float = 2.5 ,
281
273
min_beta_step : float = 1e-8 ,
282
- ** kwargs
274
+ ** kwargs ,
283
275
) -> Tuple [np .ndarray , float ]:
284
276
"""Generate a number (num_init) of candidates, using LASSO to shrink the random subsets.
285
277
Then select the best one to be `alpha` and `beta` to be the corresponding [slise.optimisation.next_beta][].
@@ -309,21 +301,21 @@ def initialise_candidates2(
309
301
weight = weight / np .sum (weight )
310
302
# Initial model (zeros)
311
303
alpha = np .zeros (X .shape [1 ])
312
- residuals = Y ** 2
313
- beta = next_beta (residuals , epsilon , 0 , weight , beta_max , max_approx , min_beta_step )
314
- loss = loss_residuals (alpha , residuals , epsilon , beta , 0 , 0 , weight )
304
+ r2 = Y ** 2
305
+ beta = next_beta (r2 , epsilon , 0. 0 , weight , beta_max , max_approx , min_beta_step )
306
+ loss = loss_residuals (alpha , r2 , epsilon , beta , 0.0 , 0. 0 , weight )
315
307
# Find the candidate with the best loss for the next_beta
316
308
for i in range (num_init ):
317
309
try :
318
310
model = __create_candidate2 (X , Y , weight , max_iterations )
319
- residuals2 = (Y - X @ model ) ** 2
320
- loss2 = loss_residuals (model , residuals2 , epsilon , beta , 0 , 0 , weight )
311
+ r2 = (Y - X @ model ) ** 2
312
+ loss2 = loss_residuals (model , r2 , epsilon , beta , 0.0 , 0. 0 , weight )
321
313
if loss2 < loss :
322
314
alpha = model
323
315
beta = next_beta (
324
- residuals2 , epsilon , 0 , weight , beta_max , max_approx , min_beta_step
316
+ r2 , epsilon , 0. 0 , weight , beta_max , max_approx , min_beta_step
325
317
)
326
- loss = loss_residuals (model , residuals2 , epsilon , beta , 0 , 0 , weight )
318
+ loss = loss_residuals (model , r2 , epsilon , beta , 0.0 , 0. 0 , weight )
327
319
except np .linalg .LinAlgError :
328
320
pass
329
321
return alpha , beta
0 commit comments