class GaussianNaiveBayes::Learner
Public Instance Methods
average(numbers)
click to toggle source
# File lib/gaussian_naive_bayes/learner.rb, line 34 def average(numbers) numbers.reduce(&:+).to_f/numbers.length end
categories_probabilities()
click to toggle source
# File lib/gaussian_naive_bayes/learner.rb, line 46 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/gaussian_naive_bayes/learner.rb, line 18 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/gaussian_naive_bayes/learner.rb, line 25 def category_summary(feature_group) feature_group.inject({}) do |map, (feature, feature_values)| map[feature] = {} map[feature][:mean] = average(feature_values) map[feature][:standard_deviation] = standard_deviation(feature_values) map end end
classifier()
click to toggle source
# File lib/gaussian_naive_bayes/learner.rb, line 14 def classifier Classifier.new(categories_summaries, categories_probabilities) end
standard_deviation(numbers)
click to toggle source
# File lib/gaussian_naive_bayes/learner.rb, line 38 def standard_deviation(numbers) mean = average(numbers) variance = numbers.inject(0) do |sum, number| sum += (number - mean)**2 end.to_f/(numbers.length - 1) Math.sqrt(variance) end
train(vector, category)
click to toggle source
# File lib/gaussian_naive_bayes/learner.rb, line 3 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 @category_to_num_instances ||= Hash.new(0) @category_to_num_instances[category] += 1 end