Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mutable struct MultiplexModel <: SupervisedModel
- models::Vector{SupervisedModel}
- best_model::Int
- end
- # when instantiating, specify that there's no best_model yet (see predict)
- function MultiplexModel(models::Vector{SupervisedModel}, best_model=0)
- MultiplexModel(models, best_model)
- end
- function fit!(mm::MultiplexModel, X, y)
- X_A, y_A, X_B, y_B = train_test_split(X, y)
- quality = [0 for m in mm.models]
- @parallel for (i, model) in enumerate(mm.models)
- fit!(model, X_A, y_A)
- quality[i] = metric_of_choice(y_B, predict(model, X_B))
- end
- mm.best_model = findmax(quality)[2]
- fit!(model, X, y)
- mm
- end
- function predict(mm:MultiplexModel, X)
- # could be something prettier here
- @assert mm.best_model > 0 "mm not fitted yet"
- predict(mm.models[mm.best_model], X)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement