measure-algorithms 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/measure-algorithms.rb +30 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f253c3c0ff22f8f66a99aa6e7e9d6db6e7570a0a
4
+ data.tar.gz: e78d6128a98b580d463faad2ccc8ec5cbb51e9d1
5
+ SHA512:
6
+ metadata.gz: d2c34710e7195893187c94edde477629b2c09343f1b760027a6220723b8fd857481931911993dd15b6e58f585b8241e044a7776f808cdd386da9c1b6e640e3a3
7
+ data.tar.gz: 3b986fd71fae303b39a112a86503c23a839061c5dbd5aecd80d40bfdb6e2f665e97474a9847435b00c1d00786fc45e4b9cab1581fdacdd6a125c7e34aa4c15d4
@@ -0,0 +1,30 @@
1
+ class MeasureAlgorithms
2
+ def self.compute_probability(a,b)
3
+ prob_a = a.to_f/(a+b)
4
+ prob_b = b.to_f/(a+b)
5
+ return [prob_a, prob_b]
6
+ end
7
+
8
+ def self.entropy(class1_members, class2_members)
9
+ prob = compute_probability(class1_members,class2_members)
10
+ return (-prob[0]*Math.log2(prob[0]))-(prob[1]*Math.log2(prob[1]))
11
+ end
12
+
13
+ def self.gain(class1_members_before, class2_members_before, class1_members_left, class2_members_left, class1_members_right, class2_members_right)
14
+ members_left = class1_members_left + class2_members_left
15
+ members_right = class1_members_right + class2_members_right
16
+ total_members = members_right + members_left
17
+
18
+ prob_left = compute_probability(class1_members_left, class2_members_left)
19
+ prob_right = compute_probability(class1_members_right, class2_members_right)
20
+ prob_before = compute_probability(class1_members_before, class2_members_before)
21
+
22
+ entropy_left = entropy(prob_left[0], prob_left[1])
23
+ entropy_right = entropy(prob_right[0], prob_right[1])
24
+ entropy_before = entropy(prob_before[0], prob_before[1])
25
+
26
+ entropy_after = (members_left.to_f/total_members)*entropy_left + (members_right.to_f/total_members)*entropy_right
27
+
28
+ return (entropy_before - entropy_after)
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: measure-algorithms
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Chuck Greenman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-02-28 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple gem for measuring algorithm performance.
14
+ email: charlesgreenman@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/measure-algorithms.rb
20
+ homepage: http://github.com/chuckgreenman/measure-algorithms
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.5.1
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Measure Algorithms
44
+ test_files: []