summaryrefslogtreecommitdiff
path: root/validation
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-05-10 16:08:13 +0200
committermguetlein <martin.guetlein@gmail.com>2011-05-10 16:08:13 +0200
commit5f3202531526283919c0707f11dcf37370f90b25 (patch)
treeb7b9909aed251bbe4590a6dd4722819dae7d12e0 /validation
parent53f313788af0530943809a383734698faa569397 (diff)
fix stratified validation
Diffstat (limited to 'validation')
-rwxr-xr-xvalidation/validation_service.rb14
1 files changed, 7 insertions, 7 deletions
diff --git a/validation/validation_service.rb b/validation/validation_service.rb
index 93c167f..ce16213 100755
--- a/validation/validation_service.rb
+++ b/validation/validation_service.rb
@@ -362,11 +362,11 @@ module Validation
split_compounds = shuffled_compounds.chunk( self.num_folds.to_i )
else
class_compounds = {} # "inactive" => compounds[], "active" => compounds[] ..
- shuffled_compounds.each do |c|
- orig_dataset.features(c).each do |a|
- value = OpenTox::Feature.new(:uri => a.uri).value(prediction_feature).to_s
- class_compounds[value] = [] unless class_compounds.has_key?(value)
- class_compounds[value].push(c)
+ accept_values = orig_dataset.features[prediction_feature][OT.acceptValue]
+ accept_values.each do |value|
+ class_compounds[value] = []
+ shuffled_compounds.each do |c|
+ class_compounds[value] << c if orig_dataset.data_entries[c][prediction_feature].to_s==value
end
end
LOGGER.debug "stratified cv: different class values: "+class_compounds.keys.join(", ")
@@ -374,7 +374,7 @@ module Validation
split_class_compounds = [] # inactive_compounds[fold_i][], active_compounds[fold_i][], ..
class_compounds.values.each do |compounds|
- split_class_compounds.push( compounds.chunk( self.num_folds ) )
+ split_class_compounds << compounds.chunk( self.num_folds.to_i )
end
LOGGER.debug "stratified cv: splits for class values: "+split_class_compounds.collect{ |c| c.collect{ |cc| cc.size }.join("/") }.join(", ")
@@ -385,7 +385,7 @@ module Validation
# step 1: sort current split in ascending order
split_comp.sort!{|x,y| x.size <=> y.size }
# step 2: add splits
- (0..self.num_folds-1).each do |i|
+ (0..self.num_folds.to_i-1).each do |i|
unless split_compounds[i]
split_compounds[i] = split_comp[i]
else