@@ -131,11 +131,11 @@ function evaluation(measure, model, resources, data...; throw=false, verbosity=1
131
131
message = L > 1 ? " [:accelerated_evaluation] " : " [evaluation] "
132
132
message *= " Evaluating model performance using $L different resources. "
133
133
attempt (finalize (message, verbosity); throw) do
134
- es = map (resources) do accel
134
+ es = map (resources) do resource
135
135
evaluate (model, data... ;
136
136
measure= measure,
137
137
resampling= Holdout (),
138
- acceleration= accel ,
138
+ acceleration= resource ,
139
139
verbosity= 0 )
140
140
end
141
141
ms = map (e-> sort (e. per_fold[1 ]), es)
@@ -156,7 +156,7 @@ function tuned_pipe_evaluation(
156
156
attempt (finalize (message, verbosity); throw) do
157
157
pipe = identity |> model
158
158
tuned_pipe = TunedModel (
159
- models= [ pipe,] ,
159
+ models= fill ( pipe, 3 ) ,
160
160
measure= measure,
161
161
)
162
162
evaluate (
@@ -194,6 +194,31 @@ function iteration_prediction(measure, model, data...; throw=false, verbosity=1)
194
194
end
195
195
end
196
196
197
+ function _stack (model, resource, isregressor)
198
+ if isregressor
199
+ models = (knn1= KNNRegressor (K= 4 ),
200
+ knn2= KNNRegressor (K= 6 ),
201
+ tmodel= model)
202
+ metalearner = KNNRegressor ()
203
+ else
204
+ models = (knn1= KNNClassifier (K= 4 ),
205
+ knn2= KNNClassifier (K= 6 ),
206
+ tmodel= model)
207
+ metalearner = KNNClassifier ()
208
+ end
209
+ Stack (;
210
+ metalearner,
211
+ resampling= CV (;nfolds= 2 ),
212
+ acceleration= resource,
213
+ models...
214
+ )
215
+ end
216
+
217
+ # return a nested stack in which `model` appears at two levels, with
218
+ # both layers accelerated using `resource`:
219
+ _double_stack (model, resource, isregressor) =
220
+ _stack (_stack (model, resource, isregressor), resource, isregressor)
221
+
197
222
# the `model` can only be single-target deterministic regressor or
198
223
# probabilistic classifier.
199
224
function stack_evaluation (
@@ -205,32 +230,17 @@ function stack_evaluation(
205
230
)
206
231
L = length (resources)
207
232
message = L > 1 ? " [:accelerated_stack_evaluation] " : " [stack_evaluation] "
208
- message *= " Evaluating a stack containing model " *
209
- " with $L different resources. "
233
+ message *= " Evaluating a nested stack containing model " *
234
+ " using $L different resources. "
210
235
target_scitype = MLJ. target_scitype (model)
211
- if AbstractVector{Continuous} <: target_scitype
212
- models = (knn1= KNNRegressor (K= 4 ),
213
- knn2= KNNRegressor (K= 6 ),
214
- model= model)
215
- metalearner = KNNRegressor ()
216
- measure = LPLoss (2 )
217
- else
218
- models = (knn1= KNNClassifier (K= 4 ),
219
- knn2= KNNClassifier (K= 6 ),
220
- model= model)
221
- metalearner = KNNClassifier ()
222
- measure = BrierScore ()
223
- end
224
- attempt (finalize (message, verbosity); throw) do
225
- es = map (resources) do accel
226
- mystack = Stack (
227
- ; metalearner,
228
- resampling= CV (;nfolds= 3 ),
229
- acceleration= accel,
230
- models... )
236
+ isregressor = AbstractVector{Continuous} <: target_scitype
237
+ measure = isregressor ? LPLoss (2 ) : BrierScore ()
231
238
239
+ attempt (finalize (message, verbosity); throw) do
240
+ es = map (resources) do resource
241
+ stack = _stack (model, resource, isregressor)
232
242
evaluate (
233
- mystack ,
243
+ stack ,
234
244
data... ;
235
245
measure= measure,
236
246
resampling= Holdout (),
@@ -239,7 +249,6 @@ function stack_evaluation(
239
249
end |> collect
240
250
ms = map (e-> sort (e. per_fold[1 ]), es)
241
251
m = first (ms)
242
- # @show ms
243
252
@assert all (≈ (m), ms[2 : end ]) ERR_INCONSISTENT_RESULTS
244
253
first (es)
245
254
end
0 commit comments