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