summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-05-16 14:46:50 +0200
committermguetlein <martin.guetlein@gmail.com>2011-05-16 14:46:50 +0200
commiteb5f8b5da9b247d62abc8a7b9eb2e44fe46a1c79 (patch)
tree99bbf52ad3b7495114ffe50194b8f9c606f5f248 /lib
parent8afc018a179b254905f93ef8607338a7826baf4e (diff)
add confidence plots
Diffstat (limited to 'lib')
-rwxr-xr-xlib/predictions.rb24
1 files changed, 16 insertions, 8 deletions
diff --git a/lib/predictions.rb b/lib/predictions.rb
index b40a8f1..420790e 100755
--- a/lib/predictions.rb
+++ b/lib/predictions.rb
@@ -88,6 +88,14 @@ module Lib
case @feature_type
when "classification"
+
+ # confusion-matrix will contain counts for predictions in a 2d array:
+ # index of first dim: actual values
+ # index of second dim: predicited values
+ # example:
+ # * summing up over all i with fixed n
+ # * confusion_matrix[i][n]
+ # * will give the number of instances that are predicted as n
@confusion_matrix = []
@accept_values.each do |v|
@confusion_matrix.push( Array.new( @num_classes, 0 ) )
@@ -289,8 +297,8 @@ module Lib
def precision(class_index=nil)
return prediction_feature_value_map( lambda{ |i| precision(i) } ) if class_index==nil
- correct = 0
- total = 0
+ correct = 0 # all instances with prediction class_index that are correctly classified
+ total = 0 # all instances with prediciton class_index
(0..@num_classes-1).each do |i|
correct += @confusion_matrix[i][class_index] if i == class_index
total += @confusion_matrix[i][class_index]
@@ -487,21 +495,21 @@ module Lib
return @variance_actual
end
- # data for roc-plots ###################################################################################
+ # data for (roc-)plots ###################################################################################
- def get_roc_values(class_value)
+ def get_prediction_values(class_value)
#puts "get_roc_values for class_value: "+class_value.to_s
raise "no confidence values" if @confidence_values==nil
- raise "no class-value specified" if class_value==nil
+ #raise "no class-value specified" if class_value==nil
- class_index = @accept_values.index(class_value)
- raise "class not found "+class_value.to_s if class_index==nil
+ class_index = @accept_values.index(class_value) if class_value!=nil
+ raise "class not found "+class_value.to_s if (class_value!=nil && class_index==nil)
c = []; p = []; a = []
(0..@predicted_values.size-1).each do |i|
# NOTE: not predicted instances are ignored here
- if @predicted_values[i]!=nil and @predicted_values[i]==class_index
+ if @predicted_values[i]!=nil and (class_index==nil || @predicted_values[i]==class_index)
c << @confidence_values[i]
p << @predicted_values[i]
a << @actual_values[i]