Class: OpenTox::Validation::CrossValidation
- Inherits:
-
Validation
- Object
- Validation
- OpenTox::Validation::CrossValidation
- Defined in:
- lib/crossvalidation.rb
Overview
Crossvalidation
Direct Known Subclasses
Class Method Summary collapse
-
.create(model, n = 10) ⇒ OpenTox::Validation::CrossValidation
Create a crossvalidation.
Instance Method Summary collapse
-
#predictions ⇒ Array<Hash>
Get predictions for all compounds.
-
#time ⇒ Fixnum
Get execution time.
-
#validations ⇒ Array<OpenTox::Validation>
Get individual validations.
Methods inherited from Validation
Class Method Details
.create(model, n = 10) ⇒ OpenTox::Validation::CrossValidation
Create a crossvalidation
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/crossvalidation.rb', line 14 def self.create model, n=10 $logger.debug model.algorithms klass = ClassificationCrossValidation if model.is_a? Model::LazarClassification klass = RegressionCrossValidation if model.is_a? Model::LazarRegression raise ArgumentError, "Unknown model class #{model.class}." unless klass cv = klass.new( name: model.name, model_id: model.id, folds: n ) cv.save # set created_at training_dataset = model.training_dataset training_dataset.folds(n).each_with_index do |fold,fold_nr| #fork do # parallel execution of validations can lead to Rserve and memory problems $logger.debug "Dataset #{training_dataset.name}: Fold #{fold_nr} started" t = Time.now validation = TrainTest.create(model, fold[0], fold[1]) cv.validation_ids << validation.id $logger.debug "Dataset #{training_dataset.name}, Fold #{fold_nr}: #{Time.now-t} seconds" end cv.save cv.statistics cv.update_attributes(finished_at: Time.now) cv end |
Instance Method Details
#predictions ⇒ Array<Hash>
Get predictions for all compounds
56 57 58 59 60 |
# File 'lib/crossvalidation.rb', line 56 def predictions predictions = {} validations.each{|v| predictions.merge!(v.predictions)} predictions end |
#time ⇒ Fixnum
Get execution time
44 45 46 |
# File 'lib/crossvalidation.rb', line 44 def time finished_at - created_at end |
#validations ⇒ Array<OpenTox::Validation>
Get individual validations
50 51 52 |
# File 'lib/crossvalidation.rb', line 50 def validations validation_ids.collect{|vid| TrainTest.find vid} end |