class MultinomialNaiveBayes::Learner
Public Class Methods
new(alpha = 1.0)
click to toggle source
# File lib/multinomial_naive_bayes/learner.rb, line 3 def initialize(alpha = 1.0) @alpha = alpha end
Public Instance Methods
categories_probabilities()
click to toggle source
# File lib/multinomial_naive_bayes/learner.rb, line 39 def categories_probabilities total_instances = @category_to_num_instances.values.reduce(&:+) @category_to_num_instances.inject({}) do |map, (category, num_instances)| map[category] = num_instances.to_f/total_instances map end end
categories_summaries()
click to toggle source
# File lib/multinomial_naive_bayes/learner.rb, line 23 def categories_summaries @category_to_feature_group.inject({}) do |map, (category, feature_group)| map[category] = category_summary(feature_group) map end end
category_summary(feature_group)
click to toggle source
# File lib/multinomial_naive_bayes/learner.rb, line 30 def category_summary(feature_group) total_count_of_all_features = feature_group.values.flatten.reduce(&:+) feature_group.inject({}) do |map, (feature, feature_values)| total_count_of_feature = feature_values.reduce(&:+) map[feature] = (total_count_of_feature + @alpha).to_f/(total_count_of_all_features + @number_of_features) map end end
classifier()
click to toggle source
# File lib/multinomial_naive_bayes/learner.rb, line 19 def classifier Classifier.new(categories_summaries, categories_probabilities) end
train(vector, category)
click to toggle source
# File lib/multinomial_naive_bayes/learner.rb, line 7 def train(vector, category) @category_to_feature_group ||= {} @category_to_feature_group[category] ||= {} vector.each_with_index do |feature_value, feature| @category_to_feature_group[category][feature] ||= [] @category_to_feature_group[category][feature] << feature_value end @number_of_features ||= vector.length @category_to_num_instances ||= Hash.new(0) @category_to_num_instances[category] += 1 end