Class: MeasureAlgorithms
- Inherits:
-
Object
- Object
- MeasureAlgorithms
- Defined in:
- lib/measure-algorithms.rb
Class Method Summary collapse
- .compute_probability(a, b) ⇒ Object
- .entropy(class1_members, class2_members) ⇒ Object
- .gain(class1_members_before, class2_members_before, class1_members_left, class2_members_left, class1_members_right, class2_members_right) ⇒ Object
- .gini(class1_members, class2_members) ⇒ Object
Class Method Details
.compute_probability(a, b) ⇒ Object
2 3 4 5 6 |
# 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) ⇒ Object
8 9 10 11 |
# 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) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# 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) ⇒ Object
31 32 33 34 |
# 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 |