Class: Crystalball::PredictorEvaluator

Inherits:
Object
  • Object
show all
Defined in:
lib/crystalball/predictor_evaluator.rb

Overview

Class to collect statistics about prediction quality

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(predictor, actual_failures:) ⇒ PredictorEvaluator

Returns a new instance of PredictorEvaluator.

Parameters:

  • predictor (Crystalball::Predictor)
    • configured predictor to fetch list of examples which might fail

  • actual_failures (Array<String>)
    • list of actual failed examples



10
11
12
13
# File 'lib/crystalball/predictor_evaluator.rb', line 10

def initialize(predictor, actual_failures:)
  @predictor = predictor
  @actual_failures = actual_failures
end

Instance Attribute Details

#actual_failuresObject (readonly)

Returns the value of attribute actual_failures.



6
7
8
# File 'lib/crystalball/predictor_evaluator.rb', line 6

def actual_failures
  @actual_failures
end

#predictorObject (readonly)

Returns the value of attribute predictor.



6
7
8
# File 'lib/crystalball/predictor_evaluator.rb', line 6

def predictor
  @predictor
end

Instance Method Details

#diff_sizeObject



25
26
27
# File 'lib/crystalball/predictor_evaluator.rb', line 25

def diff_size
  predictor.diff.lines
end

#map_sizeObject



45
46
47
# File 'lib/crystalball/predictor_evaluator.rb', line 45

def map_size
  predictor.map.size
end

#predicted_failuresObject



15
16
17
18
19
# File 'lib/crystalball/predictor_evaluator.rb', line 15

def predicted_failures
  @predicted_failures ||= actual_failures.select do |failure|
    prediction.any? { |p| failure.include?(p) }
  end
end

#prediction_rateObject



37
38
39
# File 'lib/crystalball/predictor_evaluator.rb', line 37

def prediction_rate
  actual_failures.empty? ? 1.0 : predicted_failures.size.to_f / actual_failures.size
end

#prediction_scaleObject



33
34
35
# File 'lib/crystalball/predictor_evaluator.rb', line 33

def prediction_scale
  prediction_size.to_f / map_size
end

#prediction_sizeObject



41
42
43
# File 'lib/crystalball/predictor_evaluator.rb', line 41

def prediction_size
  @prediction_size ||= predictor.map.example_groups.keys.select { |example| prediction.any? { |p| example.include?(p) } }.size
end

#prediction_to_diff_ratioObject



29
30
31
# File 'lib/crystalball/predictor_evaluator.rb', line 29

def prediction_to_diff_ratio
  prediction_size.to_f / diff_size
end

#unpredicted_failuresObject



21
22
23
# File 'lib/crystalball/predictor_evaluator.rb', line 21

def unpredicted_failures
  actual_failures - predicted_failures
end