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