class MeasureAlgorithms
Public Class Methods
compute_probability(a,b)
click to toggle source
# File lib/measure-algorithms.rb, line 2 def self.compute_probability(a,b) prob_a = a.to_f/(a+b) prob_b = b.to_f/(a+b) return [prob_a, prob_b] end
entropy(class1_members, class2_members)
click to toggle source
# File lib/measure-algorithms.rb, line 8 def self.entropy(class1_members, class2_members) prob = compute_probability(class1_members,class2_members) return (-prob[0]*Math.log2(prob[0]))-(prob[1]*Math.log2(prob[1])) end
gain(class1_members_before, class2_members_before, class1_members_left, class2_members_left, class1_members_right, class2_members_right)
click to toggle source
# File lib/measure-algorithms.rb, line 13 def self.gain(class1_members_before, class2_members_before, class1_members_left, class2_members_left, class1_members_right, class2_members_right) members_left = class1_members_left + class2_members_left members_right = class1_members_right + class2_members_right total_members = members_right + members_left prob_left = compute_probability(class1_members_left, class2_members_left) prob_right = compute_probability(class1_members_right, class2_members_right) prob_before = compute_probability(class1_members_before, class2_members_before) entropy_left = entropy(prob_left[0], prob_left[1]) entropy_right = entropy(prob_right[0], prob_right[1]) entropy_before = entropy(prob_before[0], prob_before[1]) entropy_after = (members_left.to_f/total_members)*entropy_left + (members_right.to_f/total_members)*entropy_right return (entropy_before - entropy_after) end
gini(class1_members, class2_members)
click to toggle source
# File lib/measure-algorithms.rb, line 31 def self.gini(class1_members, class2_members) total_members = class1_members + class2_members return 1 - (class1_members.to_f/total_members)**2 + (class2_members.to_f/total_members)**2 end