class Newral::Bayes

Attributes

probabilities[R]
theorem[R]

Public Class Methods

new( theorem ) click to toggle source
# File lib/newral/bayes.rb, line 5
def initialize( theorem )
  @theorem = theorem
  @probabilities = {}
end

Public Instance Methods

add_probability(key,probability,apriori: nil) click to toggle source
# File lib/newral/bayes.rb, line 10
def add_probability(key,probability,apriori: nil)
  probability = Probability.new(key,probability,apriori: apriori)
  @probabilities[ probability.key ] = probability 
end
compute( key ) click to toggle source
# File lib/newral/bayes.rb, line 15
def compute( key )
  probability = if @probabilities[key]
    @probabilities[key]
  elsif key.start_with?("!") && @probabilities[key.sub("!","")]
    !@probabilities[key.sub("!",'')]
  elsif key.match('\|')
    key,apriori=key.split("|")
    compute("#{apriori}|#{key}")*compute(key)/compute(apriori)
  else
    apriori = @probabilities.keys.find{|p| p.split("|")[0]==key && !p.split("|")[1].match('!') }
    if apriori
      apriori = apriori.split("|")[1]
      compute("#{key}|#{apriori}")*compute(apriori)+compute("#{key}|!#{apriori}")*compute("!#{apriori}")
    else 
      puts "not found #{key}"
    end
  end
  @probabilities[ probability.key ] = probability
  probability
end