Class: OpenTox::Validation::TrainTest

Inherits:
Validation show all
Defined in:
lib/train-test-validation.rb

Overview

Training test set validation

Direct Known Subclasses

ClassificationTrainTest, RegressionTrainTest

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Validation

#model

Class Method Details

.create(model, training_set, test_set) ⇒ OpenTox::Validation::TrainTest

Create a training test set validation

Parameters:

Returns:



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
41
# File 'lib/train-test-validation.rb', line 16

def self.create model, training_set, test_set
  
  validation_model = model.class.create prediction_feature: model.prediction_feature, training_dataset: training_set, algorithms: model.algorithms
  validation_model.save
  predictions = validation_model.predict test_set.substances
  nr_unpredicted = 0
  predictions.each do |cid,prediction|
    if prediction[:value]
      prediction[:measurements] = test_set.values(cid, prediction[:prediction_feature_id])
    else
      nr_unpredicted += 1
    end
  end
  predictions.select!{|cid,p| p[:value] and p[:measurements]}
  # hack to avoid mongos file size limit error on large datasets
  #predictions.each{|cid,p| p[:neighbors] = []} if model.training_dataset.name.match(/mutagenicity/i)
  validation = self.new(
    :model_id => validation_model.id,
    :test_dataset_id => test_set.id,
    :nr_instances => test_set.substances.size,
    :nr_unpredicted => nr_unpredicted,
    :predictions => predictions
  )
  validation.save
  validation
end

Instance Method Details

#test_datasetOpenTox::Dataset

Get test dataset

Returns:



45
46
47
# File 'lib/train-test-validation.rb', line 45

def test_dataset
  Dataset.find test_dataset_id
end

#training_datasetOpenTox::Dataset

Get training dataset

Returns:



51
52
53
# File 'lib/train-test-validation.rb', line 51

def training_dataset
  Dataset.find training_dataset_id
end