Advertisement
Guest User

Untitled

a guest
Feb 7th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 0.85 KB | None | 0 0
  1. mutable struct MultiplexModel <: SupervisedModel
  2.     models::Vector{SupervisedModel}
  3.     best_model::Int
  4. end
  5.  
  6. # when instantiating, specify that there's no best_model yet (see predict)
  7. function MultiplexModel(models::Vector{SupervisedModel}, best_model=0)
  8.     MultiplexModel(models, best_model)
  9. end
  10.  
  11. function fit!(mm::MultiplexModel, X, y)
  12.  
  13.     X_A, y_A, X_B, y_B = train_test_split(X, y)
  14.  
  15.     quality = [0 for m in mm.models]
  16.  
  17.     @parallel for (i, model) in enumerate(mm.models)
  18.         fit!(model, X_A, y_A)
  19.         quality[i] = metric_of_choice(y_B, predict(model, X_B))
  20.     end
  21.  
  22.     mm.best_model = findmax(quality)[2]
  23.  
  24.     fit!(model, X, y)
  25.  
  26.     mm
  27. end
  28.  
  29. function predict(mm:MultiplexModel, X)
  30.     # could be something prettier here
  31.     @assert mm.best_model > 0 "mm not fitted yet"
  32.     predict(mm.models[mm.best_model], X)
  33. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement