Class: MultinomialNaiveBayes::Classifier

Inherits:
Object
  • Object
show all
Defined in:
lib/multinomial_naive_bayes/classifier.rb

Instance Method Summary collapse

Constructor Details

#initialize(categories_summaries, categories_probabilities) ⇒ Classifier

Returns a new instance of Classifier.



3
4
5
6
# File 'lib/multinomial_naive_bayes/classifier.rb', line 3

def initialize(categories_summaries, categories_probabilities)
  @categories_summaries = categories_summaries
  @categories_probabilities = categories_probabilities
end

Instance Method Details

#all_ln_categories_probabilities(vector) ⇒ Object



19
20
21
22
23
24
# 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) ⇒ Object



8
9
10
# File 'lib/multinomial_naive_bayes/classifier.rb', line 8

def classify(vector)
  max_ln_category_probability(vector)[0]
end

#ln_category_probability(vector, category) ⇒ Object



26
27
28
29
30
31
32
# 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) ⇒ Object



12
13
14
15
16
17
# 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