class MultinomialNaiveBayes::Classifier

Public Class Methods

new(categories_summaries, categories_probabilities) click to toggle source
# File lib/multinomial_naive_bayes/classifier.rb, line 3
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/multinomial_naive_bayes/classifier.rb, line 19
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/multinomial_naive_bayes/classifier.rb, line 8
def classify(vector)
  max_ln_category_probability(vector)[0]
end
ln_category_probability(vector, category) click to toggle source
# File lib/multinomial_naive_bayes/classifier.rb, line 26
def ln_category_probability(vector, category)
  sum = 0
  vector.each_with_index do |feature_value, feature|
    sum += Math.log(@categories_summaries[category][feature]**feature_value)
  end
  sum + Math.log(@categories_probabilities[category])
end
max_ln_category_probability(vector) click to toggle source
# File lib/multinomial_naive_bayes/classifier.rb, line 12
def max_ln_category_probability(vector)
  all_ln_categories_probabilities(vector).
    to_a.
    sort_by{|ln_category_probability| -ln_category_probability[1]}.
    first
end