Class: OpenTox::Validation::LeaveOneOut
- Inherits:
-
Validation
- Object
- Validation
- OpenTox::Validation::LeaveOneOut
- Defined in:
- lib/leave-one-out-validation.rb
Overview
Leave one out validation
Direct Known Subclasses
Class Method Summary collapse
-
.create(model) ⇒ OpenTox::Validation::LeaveOneOut
Create a leave one out validation.
Methods inherited from Validation
Class Method Details
.create(model) ⇒ OpenTox::Validation::LeaveOneOut
Create a leave one out validation
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/leave-one-out-validation.rb', line 11 def self.create model raise ArgumentError, "Cannot create leave one out validation for models with supervised feature selection. Please use crossvalidation instead." if model.algorithms[:feature_selection] $logger.debug "#{model.name}: LOO validation started" t = Time.now model.training_dataset.features.collect{|f| f.class}.include?(NominalBioActivity) ? klass = ClassificationLeaveOneOut : klass = RegressionLeaveOneOut loo = klass.new :model_id => model.id predictions = model.predict model.training_dataset.substances predictions.each{|cid,p| p.delete(:neighbors)} predictions.each do |cid,prediction| prediction[:measurements] = model.training_dataset.values(cid, prediction[:prediction_feature_id]) if prediction[:value] predictions.delete(cid) unless prediction[:value] and prediction[:measurements] end predictions.select!{|cid,p| p[:value] and p[:measurements]} loo.predictions = predictions loo.statistics $logger.debug "#{model.name}, LOO validation: #{Time.now-t} seconds" loo end |