summaryrefslogtreecommitdiff
path: root/lib/leave-one-out-validation.rb
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.ch>2016-04-15 11:01:16 +0200
committerChristoph Helma <helma@in-silico.ch>2016-04-15 11:01:16 +0200
commit8aab046eb1ad39aaf10c5a8596102c35c7b2ee0b (patch)
treee3a654da5a042b7b52655be051ce70eeec2a66e7 /lib/leave-one-out-validation.rb
parent753fcc204d93d86c76860bee6e2f7d0468c3c940 (diff)
data_entries removed from datasets. datasets are now just containers for compounds and features, feature values have to be retrieved from substances.
Diffstat (limited to 'lib/leave-one-out-validation.rb')
-rw-r--r--lib/leave-one-out-validation.rb11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/leave-one-out-validation.rb b/lib/leave-one-out-validation.rb
index 10fbe85..ed917eb 100644
--- a/lib/leave-one-out-validation.rb
+++ b/lib/leave-one-out-validation.rb
@@ -10,6 +10,8 @@ module OpenTox
field :finished_at, type: Time
def self.create model
+ $logger.debug "#{model.name}: LOO validation started"
+ t = Time.now
model.training_dataset.features.first.nominal? ? klass = ClassificationLeaveOneOutValidation : klass = RegressionLeaveOneOutValidation
loo = klass.new :model_id => model.id, :dataset_id => model.training_dataset_id
predictions = model.predict model.training_dataset.compounds
@@ -17,7 +19,7 @@ module OpenTox
nr_unpredicted = 0
predictions.each do |cid,prediction|
if prediction[:value]
- prediction[:measured] = model.training_dataset.data_entries[cid][prediction[:prediction_feature_id].to_s]
+ prediction[:measured] = Substance.find(cid).toxicities[prediction[:prediction_feature_id].to_s]
else
nr_unpredicted += 1
end
@@ -28,6 +30,7 @@ module OpenTox
loo.predictions = predictions
loo.statistics
loo.save
+ $logger.debug "#{model.name}, LOO validation: #{Time.now-t} seconds"
loo
end
@@ -84,16 +87,12 @@ module OpenTox
class RegressionLeaveOneOutValidation < LeaveOneOutValidation
-
- field :rmse, type: Float, default: 0.0
+ field :rmse, type: Float, default: 0
field :mae, type: Float, default: 0
- #field :weighted_rmse, type: Float, default: 0
- #field :weighted_mae, type: Float, default: 0
field :r_squared, type: Float
field :correlation_plot_id, type: BSON::ObjectId
field :confidence_plot_id, type: BSON::ObjectId
-
def statistics
stat = ValidationStatistics.regression predictions
update_attributes(stat)