class GaussianNaiveBayes::Classifier
Attributes
categories_probabilities[R]
categories_summaries[R]
Public Class Methods
new(categories_summaries, categories_probabilities)
click to toggle source
# File lib/gaussian_naive_bayes/classifier.rb, line 4 def initialize(categories_summaries, categories_probabilities) @categories_summaries = categories_summaries @categories_probabilities = categories_probabilities end
Public Instance Methods
all_ln_categories_probabilities(vector)
click to toggle source
# File lib/gaussian_naive_bayes/classifier.rb, line 20 def all_ln_categories_probabilities(vector) @categories_summaries.keys.inject({}) do |map, category| map[category] = ln_category_probability(vector, category) map end end
classify(vector)
click to toggle source
# File lib/gaussian_naive_bayes/classifier.rb, line 9 def classify(vector) max_ln_category_probability(vector)[0] end
ln_category_probability(vector, category)
click to toggle source
# File lib/gaussian_naive_bayes/classifier.rb, line 27 def ln_category_probability(vector, category) sum = 0 vector.each_with_index do |feature_value, feature| sum += ln_normal_distribution(feature_value, @categories_summaries[category][feature][:mean], @categories_summaries[category][feature][:standard_deviation]) end sum + Math.log(@categories_probabilities[category]) end
ln_normal_distribution(x, mean, stdev)
click to toggle source
# File lib/gaussian_naive_bayes/classifier.rb, line 35 def ln_normal_distribution(x, mean, stdev) Math.log(1.0/(stdev*Math.sqrt(2*Math::PI))) - ((x - mean)**2)/(2*(stdev**2)) end
max_ln_category_probability(vector)
click to toggle source
# File lib/gaussian_naive_bayes/classifier.rb, line 13 def max_ln_category_probability(vector) all_ln_categories_probabilities(vector). to_a. sort_by{|ln_category_probability| -ln_category_probability[1]}. first end