nirvdrum-ai4r 1.9.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 (150) hide show
  1. data/.gitignore +1 -0
  2. data/.rakeTasks +7 -0
  3. data/README.rdoc +56 -0
  4. data/Rakefile.rb +42 -0
  5. data/VERSION +1 -0
  6. data/ai4r.gemspec +221 -0
  7. data/change_log +49 -0
  8. data/examples/classifiers/id3_data.csv +121 -0
  9. data/examples/classifiers/id3_example.rb +29 -0
  10. data/examples/classifiers/naive_bayes_data.csv +11 -0
  11. data/examples/classifiers/naive_bayes_example.rb +16 -0
  12. data/examples/classifiers/results.txt +31 -0
  13. data/examples/genetic_algorithm/genetic_algorithm_example.rb +37 -0
  14. data/examples/genetic_algorithm/travel_cost.csv +16 -0
  15. data/examples/neural_network/backpropagation_example.rb +67 -0
  16. data/examples/neural_network/patterns_with_base_noise.rb +68 -0
  17. data/examples/neural_network/patterns_with_noise.rb +66 -0
  18. data/examples/neural_network/training_patterns.rb +68 -0
  19. data/examples/neural_network/xor_example.rb +35 -0
  20. data/examples/som/som_data.rb +156 -0
  21. data/examples/som/som_multi_node_example.rb +22 -0
  22. data/examples/som/som_single_example.rb +24 -0
  23. data/lib/ai4r.rb +32 -0
  24. data/lib/ai4r/classifiers/classifier.rb +59 -0
  25. data/lib/ai4r/classifiers/hyperpipes.rb +118 -0
  26. data/lib/ai4r/classifiers/id3.rb +326 -0
  27. data/lib/ai4r/classifiers/multilayer_perceptron.rb +135 -0
  28. data/lib/ai4r/classifiers/naive_bayes.rb +259 -0
  29. data/lib/ai4r/classifiers/one_r.rb +110 -0
  30. data/lib/ai4r/classifiers/prism.rb +197 -0
  31. data/lib/ai4r/classifiers/zero_r.rb +73 -0
  32. data/lib/ai4r/clusterers/average_linkage.rb +59 -0
  33. data/lib/ai4r/clusterers/bisecting_k_means.rb +93 -0
  34. data/lib/ai4r/clusterers/centroid_linkage.rb +66 -0
  35. data/lib/ai4r/clusterers/clusterer.rb +61 -0
  36. data/lib/ai4r/clusterers/complete_linkage.rb +67 -0
  37. data/lib/ai4r/clusterers/diana.rb +139 -0
  38. data/lib/ai4r/clusterers/k_means.rb +126 -0
  39. data/lib/ai4r/clusterers/median_linkage.rb +61 -0
  40. data/lib/ai4r/clusterers/single_linkage.rb +194 -0
  41. data/lib/ai4r/clusterers/ward_linkage.rb +64 -0
  42. data/lib/ai4r/clusterers/weighted_average_linkage.rb +61 -0
  43. data/lib/ai4r/data/data_set.rb +266 -0
  44. data/lib/ai4r/data/parameterizable.rb +64 -0
  45. data/lib/ai4r/data/proximity.rb +100 -0
  46. data/lib/ai4r/data/statistics.rb +77 -0
  47. data/lib/ai4r/experiment/classifier_evaluator.rb +95 -0
  48. data/lib/ai4r/genetic_algorithm/genetic_algorithm.rb +270 -0
  49. data/lib/ai4r/neural_network/backpropagation.rb +293 -0
  50. data/lib/ai4r/neural_network/hopfield.rb +149 -0
  51. data/lib/ai4r/som/layer.rb +68 -0
  52. data/lib/ai4r/som/node.rb +96 -0
  53. data/lib/ai4r/som/som.rb +155 -0
  54. data/lib/ai4r/som/two_phase_layer.rb +90 -0
  55. data/site/forrest.properties +152 -0
  56. data/site/forrest.properties.dispatcher.properties +25 -0
  57. data/site/forrest.properties.xml +29 -0
  58. data/site/src/documentation/README.txt +7 -0
  59. data/site/src/documentation/classes/CatalogManager.properties +62 -0
  60. data/site/src/documentation/content/locationmap.xml +72 -0
  61. data/site/src/documentation/content/xdocs/downloads.html +9 -0
  62. data/site/src/documentation/content/xdocs/geneticAlgorithms.xml +294 -0
  63. data/site/src/documentation/content/xdocs/index.xml +155 -0
  64. data/site/src/documentation/content/xdocs/machineLearning.xml +131 -0
  65. data/site/src/documentation/content/xdocs/neuralNetworks.xml +270 -0
  66. data/site/src/documentation/content/xdocs/site.xml +54 -0
  67. data/site/src/documentation/content/xdocs/sourceCode.xml +43 -0
  68. data/site/src/documentation/content/xdocs/tabs.xml +35 -0
  69. data/site/src/documentation/resources/images/ai4r-logo.png +0 -0
  70. data/site/src/documentation/resources/images/c.png +0 -0
  71. data/site/src/documentation/resources/images/c_wbn.png +0 -0
  72. data/site/src/documentation/resources/images/c_wn.png +0 -0
  73. data/site/src/documentation/resources/images/ellipse-2.svg +30 -0
  74. data/site/src/documentation/resources/images/ero.gif +0 -0
  75. data/site/src/documentation/resources/images/europe2.png +0 -0
  76. data/site/src/documentation/resources/images/europe3.png +0 -0
  77. data/site/src/documentation/resources/images/fitness.png +0 -0
  78. data/site/src/documentation/resources/images/genetic_algorithms_example.png +0 -0
  79. data/site/src/documentation/resources/images/icon-a.png +0 -0
  80. data/site/src/documentation/resources/images/icon-b.png +0 -0
  81. data/site/src/documentation/resources/images/icon.png +0 -0
  82. data/site/src/documentation/resources/images/jadeferret.png +0 -0
  83. data/site/src/documentation/resources/images/my_email.png +0 -0
  84. data/site/src/documentation/resources/images/neural_network_example.png +0 -0
  85. data/site/src/documentation/resources/images/project-logo.png +0 -0
  86. data/site/src/documentation/resources/images/rubyforge.png +0 -0
  87. data/site/src/documentation/resources/images/s.png +0 -0
  88. data/site/src/documentation/resources/images/s_wbn.png +0 -0
  89. data/site/src/documentation/resources/images/s_wn.png +0 -0
  90. data/site/src/documentation/resources/images/sigmoid.png +0 -0
  91. data/site/src/documentation/resources/images/sub-dir/icon-c.png +0 -0
  92. data/site/src/documentation/resources/images/t.png +0 -0
  93. data/site/src/documentation/resources/images/t_wbn.png +0 -0
  94. data/site/src/documentation/resources/images/t_wn.png +0 -0
  95. data/site/src/documentation/resources/schema/catalog.xcat +29 -0
  96. data/site/src/documentation/resources/schema/hello-v10.dtd +51 -0
  97. data/site/src/documentation/resources/schema/symbols-project-v10.ent +26 -0
  98. data/site/src/documentation/resources/stylesheets/hello2document.xsl +33 -0
  99. data/site/src/documentation/sitemap.xmap +66 -0
  100. data/site/src/documentation/skinconf.xml +418 -0
  101. data/site/src/documentation/translations/langcode.xml +29 -0
  102. data/site/src/documentation/translations/languages_de.xml +24 -0
  103. data/site/src/documentation/translations/languages_en.xml +24 -0
  104. data/site/src/documentation/translations/languages_es.xml +22 -0
  105. data/site/src/documentation/translations/languages_fr.xml +24 -0
  106. data/site/src/documentation/translations/languages_nl.xml +24 -0
  107. data/site/src/documentation/translations/menu.xml +33 -0
  108. data/site/src/documentation/translations/menu_af.xml +33 -0
  109. data/site/src/documentation/translations/menu_de.xml +33 -0
  110. data/site/src/documentation/translations/menu_es.xml +33 -0
  111. data/site/src/documentation/translations/menu_fr.xml +33 -0
  112. data/site/src/documentation/translations/menu_it.xml +33 -0
  113. data/site/src/documentation/translations/menu_nl.xml +33 -0
  114. data/site/src/documentation/translations/menu_no.xml +33 -0
  115. data/site/src/documentation/translations/menu_ru.xml +33 -0
  116. data/site/src/documentation/translations/menu_sk.xml +33 -0
  117. data/site/src/documentation/translations/tabs.xml +22 -0
  118. data/site/src/documentation/translations/tabs_de.xml +22 -0
  119. data/site/src/documentation/translations/tabs_es.xml +22 -0
  120. data/site/src/documentation/translations/tabs_fr.xml +22 -0
  121. data/site/src/documentation/translations/tabs_nl.xml +22 -0
  122. data/test/classifiers/hyperpipes_test.rb +84 -0
  123. data/test/classifiers/id3_test.rb +208 -0
  124. data/test/classifiers/multilayer_perceptron_test.rb +79 -0
  125. data/test/classifiers/naive_bayes_test.rb +43 -0
  126. data/test/classifiers/one_r_test.rb +62 -0
  127. data/test/classifiers/prism_test.rb +85 -0
  128. data/test/classifiers/zero_r_test.rb +50 -0
  129. data/test/clusterers/average_linkage_test.rb +51 -0
  130. data/test/clusterers/bisecting_k_means_test.rb +66 -0
  131. data/test/clusterers/centroid_linkage_test.rb +53 -0
  132. data/test/clusterers/complete_linkage_test.rb +57 -0
  133. data/test/clusterers/diana_test.rb +69 -0
  134. data/test/clusterers/k_means_test.rb +100 -0
  135. data/test/clusterers/median_linkage_test.rb +53 -0
  136. data/test/clusterers/single_linkage_test.rb +122 -0
  137. data/test/clusterers/ward_linkage_test.rb +53 -0
  138. data/test/clusterers/weighted_average_linkage_test.rb +53 -0
  139. data/test/data/data_set.csv +121 -0
  140. data/test/data/data_set_test.rb +96 -0
  141. data/test/data/proximity_test.rb +81 -0
  142. data/test/data/statistics_data_set.csv +5 -0
  143. data/test/data/statistics_test.rb +65 -0
  144. data/test/experiment/classifier_evaluator_test.rb +76 -0
  145. data/test/genetic_algorithm/chromosome_test.rb +58 -0
  146. data/test/genetic_algorithm/genetic_algorithm_test.rb +81 -0
  147. data/test/neural_network/backpropagation_test.rb +69 -0
  148. data/test/neural_network/hopfield_test.rb +72 -0
  149. data/test/som/som_test.rb +97 -0
  150. metadata +238 -0
@@ -0,0 +1,58 @@
1
+ # Author:: Sergio Fierens
2
+ # License:: MPL 1.1
3
+ # Project:: ai4r
4
+ # Url:: http://ai4r.rubyforge.org/
5
+ #
6
+ # You can redistribute it and/or modify it under the terms of
7
+ # the Mozilla Public License version 1.1 as published by the
8
+ # Mozilla Foundation at http://www.mozilla.org/MPL/MPL-1.1.txt
9
+
10
+
11
+ require File.dirname(__FILE__) + '/../../lib/ai4r/genetic_algorithm/genetic_algorithm'
12
+
13
+ require 'test/unit'
14
+
15
+ module Ai4r
16
+
17
+ module GeneticAlgorithm
18
+
19
+ COST = [
20
+ [ 0, 10, 12, 21, 25, 25, 34, 26, 28, 11],
21
+ [ 10, 0, 12, 21, 19, 21, 18, 12, 22, 11],
22
+ [ 10, 12, 0, 24, 18, 16, 36, 29, 17, 22],
23
+ [ 20, 12, 22, 0, 32, 34, 28, 24, 31, 9],
24
+ [ 23, 20, 19, 31, 0, 25, 29, 25, 31, 28],
25
+ [ 24, 20, 15, 33, 24, 0, 38, 34, 17, 25],
26
+ [ 33, 19, 35, 29, 24, 34, 0, 9, 38, 28],
27
+ [ 25, 13, 28, 25, 25, 34, 9, 0, 33, 19],
28
+ [ 30, 23, 18, 29, 31, 18, 38, 34, 0, 23],
29
+ [ 11, 11, 22, 9, 28, 26, 27, 19, 22, 0]
30
+ ]
31
+
32
+ class ChromosomeTest < Test::Unit::TestCase
33
+
34
+ def test_chromosome_seed
35
+ Chromosome.set_cost_matrix(COST)
36
+ chromosome = Chromosome.seed
37
+ assert_equal [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], chromosome.data.sort
38
+ end
39
+
40
+ def test_fitness
41
+ Chromosome.set_cost_matrix(COST)
42
+ chromosome = Chromosome.new([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
43
+ assert_equal( -206, chromosome.fitness)
44
+ end
45
+
46
+ def test_reproduce
47
+ Chromosome.set_cost_matrix(COST)
48
+ c1 = Chromosome.new([2, 8, 5, 3, 6, 7, 1, 9, 0, 4])
49
+ c2 = Chromosome.new([3, 2, 0, 1, 5, 4, 6, 7, 9, 8])
50
+ c3 = Chromosome.reproduce(c1, c2)
51
+ assert_equal([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], c3.data.sort)
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+
58
+ end
@@ -0,0 +1,81 @@
1
+ # Author:: Sergio Fierens
2
+ # License:: MPL 1.1
3
+ # Project:: ai4r
4
+ # Url:: http://ai4r.rubyforge.org/
5
+ #
6
+ # You can redistribute it and/or modify it under the terms of
7
+ # the Mozilla Public License version 1.1 as published by the
8
+ # Mozilla Foundation at http://www.mozilla.org/MPL/MPL-1.1.txt
9
+
10
+ require File.dirname(__FILE__) + '/../../lib/ai4r/genetic_algorithm/genetic_algorithm'
11
+ require 'test/unit'
12
+
13
+ module Ai4r
14
+
15
+ module GeneticAlgorithm
16
+
17
+ COUNTRY = %w"Belgium France Germany Ireland Italy Poland Portugal Spain Sweden UK"
18
+
19
+ # Belgium, France, Germany, Ireland, Italy, Poland, Portugal, Spain, Sweden, UK
20
+ COSTS = [
21
+ [ 0, 10, 12, 21, 25, 25, 34, 26, 28, 11],
22
+ [ 10, 0, 12, 21, 19, 21, 18, 12, 22, 11],
23
+ [ 10, 12, 0, 24, 18, 16, 36, 29, 17, 22],
24
+ [ 20, 12, 22, 0, 32, 34, 28, 24, 31, 9],
25
+ [ 23, 20, 19, 31, 0, 25, 29, 25, 31, 28],
26
+ [ 24, 20, 15, 33, 24, 0, 38, 34, 17, 25],
27
+ [ 33, 19, 35, 29, 24, 34, 0, 9, 38, 28],
28
+ [ 25, 13, 28, 25, 25, 34, 9, 0, 33, 19],
29
+ [ 30, 23, 18, 29, 31, 18, 38, 34, 0, 23],
30
+ [ 11, 11, 22, 9, 28, 26, 27, 19, 22, 0]
31
+ ]
32
+
33
+
34
+ class GeneticAlgorithmTest < Test::Unit::TestCase
35
+
36
+ def test_chromosome_seed
37
+ Chromosome.set_cost_matrix(COSTS)
38
+ chromosome = Chromosome.seed
39
+ assert_equal [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], chromosome.data.sort
40
+ end
41
+
42
+ def test_fitness
43
+ Chromosome.set_cost_matrix(COSTS)
44
+ chromosome = Chromosome.new([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
45
+ assert_equal( -206, chromosome.fitness)
46
+ end
47
+
48
+ def test_selection
49
+ search = GeneticSearch.new(10, 5)
50
+ search.generate_initial_population
51
+ selected = search.selection
52
+ selected.each { |c| assert c!=nil }
53
+ assert_equal 6, selected.length
54
+ assert_equal 1, search.population[0].normalized_fitness
55
+ assert_equal 0, search.population.last.normalized_fitness
56
+ assert_equal 10, search.population.length
57
+ end
58
+
59
+ def test_reproduction
60
+ search = GeneticSearch.new(10, 5)
61
+ search.generate_initial_population
62
+ selected = search.selection
63
+ offsprings = search.reproduction selected
64
+ assert_equal 3, offsprings.length
65
+ end
66
+
67
+ def test_replace_worst_ranked
68
+ search = GeneticSearch.new(10, 5)
69
+ search.generate_initial_population
70
+ selected = search.selection
71
+ offsprings = search.reproduction selected
72
+ search.replace_worst_ranked offsprings
73
+ assert_equal 10, search.population.length
74
+ offsprings.each { |c| assert search.population.include?(c)}
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+
81
+ end
@@ -0,0 +1,69 @@
1
+ #
2
+ # neural_network_test.rb
3
+ #
4
+ # This is a unit test file for the backpropagation neural network implemented
5
+ # in ai4r
6
+ #
7
+ # Author:: Sergio Fierens
8
+ # License:: MPL 1.1
9
+ # Project:: ai4r
10
+ # Url:: http://ai4r.rubyforge.org/
11
+ #
12
+ # You can redistribute it and/or modify it under the terms of
13
+ # the Mozilla Public License version 1.1 as published by the
14
+ # Mozilla Foundation at http://www.mozilla.org/MPL/MPL-1.1.txt
15
+ #
16
+
17
+
18
+ require File.dirname(__FILE__) + '/../../lib/ai4r/neural_network/backpropagation'
19
+ require 'test/unit'
20
+
21
+ Ai4r::NeuralNetwork::Backpropagation.send(:public, *Ai4r::NeuralNetwork::Backpropagation.protected_instance_methods)
22
+ Ai4r::NeuralNetwork::Backpropagation.send(:public, *Ai4r::NeuralNetwork::Backpropagation.private_instance_methods)
23
+
24
+ module Ai4r
25
+
26
+ module NeuralNetwork
27
+
28
+
29
+ class BackpropagationTest < Test::Unit::TestCase
30
+
31
+
32
+ def test_init_network
33
+ net_4_2 = Backpropagation.new([4, 2]).init_network
34
+ assert_equal [[1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0]],
35
+ net_4_2.activation_nodes
36
+ assert_equal 1, net_4_2.weights.size
37
+ assert_equal 5, net_4_2.weights.first.size
38
+ net_4_2.weights.first.each do |weights_n|
39
+ assert_equal 2, weights_n.size
40
+ end
41
+
42
+ net_2_2_1 = Backpropagation.new([2, 2, 1]).init_network
43
+ assert_equal [[1.0, 1.0, 1.0], [1.0, 1.0, 1.0], [1.0]],
44
+ net_2_2_1.activation_nodes
45
+ assert_equal 2, net_2_2_1.weights.size
46
+ assert_equal 3, net_2_2_1.weights.first.size
47
+
48
+ net_2_2_1.disable_bias = true
49
+ net_2_2_1_no_bias = net_2_2_1.init_network
50
+ assert_equal [[1.0, 1.0], [1.0, 1.0], [1.0]],
51
+ net_2_2_1_no_bias.activation_nodes
52
+ end
53
+
54
+ def test_eval
55
+ #Test set 1
56
+ net = Backpropagation.new([3, 2])
57
+ y = net.eval([3, 2, 3])
58
+ assert y.length == 2
59
+ #Test set 2
60
+ net = Backpropagation.new([2, 4, 8, 10, 7])
61
+ y = net.eval([2, 3])
62
+ assert y.length == 7
63
+ end
64
+
65
+ end
66
+
67
+ end
68
+
69
+ end
@@ -0,0 +1,72 @@
1
+ # This is a unit test file for the hopfield neural network AI4r implementation
2
+ #
3
+ # Author:: Sergio Fierens
4
+ # License:: MPL 1.1
5
+ # Project:: ai4r
6
+ # Url:: http://ai4r.rubyforge.org/
7
+ #
8
+ # You can redistribute it and/or modify it under the terms of
9
+ # the Mozilla Public License version 1.1 as published by the
10
+ # Mozilla Foundation at http://www.mozilla.org/MPL/MPL-1.1.txt
11
+
12
+ require File.dirname(__FILE__) + '/../../lib/ai4r'
13
+ require 'test/unit'
14
+
15
+ Ai4r::NeuralNetwork::Hopfield.send(:public, *Ai4r::NeuralNetwork::Hopfield.protected_instance_methods)
16
+
17
+ module Ai4r
18
+
19
+ module NeuralNetwork
20
+
21
+
22
+ class HopfieldTest < Test::Unit::TestCase
23
+
24
+ def setup
25
+ @data_set = Ai4r::Data::DataSet.new :data_items => [
26
+ [1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1],
27
+ [-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1],
28
+ [-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,1,1],
29
+ [1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1],
30
+ ]
31
+ end
32
+
33
+ def test_initialize_nodes
34
+ net = Hopfield.new
35
+ data_set = Ai4r::Data::DataSet.new :data_items => [[1,1,0,0,1,1,0,0]]
36
+ assert_equal [-1,-1,-1,-1,-1,-1,-1,-1], net.initialize_nodes(data_set)
37
+ end
38
+
39
+ def test_initialize_weights
40
+ net = Hopfield.new
41
+ net.initialize_nodes @data_set
42
+ net.initialize_weights(@data_set)
43
+ assert_equal 15, net.weights.length
44
+ net.weights.each_with_index {|w_row, i| assert_equal i+1, w_row.length}
45
+ end
46
+
47
+ def test_run
48
+ net = Hopfield.new
49
+ net.train @data_set
50
+ pattern = [1,1,-1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,-1]
51
+ 100.times do
52
+ pattern = net.run(pattern)
53
+ end
54
+ assert_equal [1,1,-1,-1,1,1,-1,-1,1,1,-1,-1,1,1,-1,-1], pattern
55
+ end
56
+
57
+ def test_eval
58
+ net = Hopfield.new
59
+ net.train @data_set
60
+ p = [1,1,-1,1,1,1,-1,-1,1,1,-1,-1,1,1,1,-1]
61
+ assert_equal @data_set.data_items[0], net.eval(p)
62
+ p = [-1,-1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,1,1]
63
+ assert_equal @data_set.data_items[1], net.eval(p)
64
+ p = [-1,-1,-1,-1,-1,-1,-1,-1,1,1,1,1,1,1,-1,-1]
65
+ assert_equal @data_set.data_items[2], net.eval(p)
66
+ p = [-1,-1,1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,-1]
67
+ assert_equal @data_set.data_items[3], net.eval(p)
68
+ end
69
+
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,97 @@
1
+ # This is a unit test file for the SOM algorithm implemented
2
+ # in ai4r
3
+ #
4
+ # Author:: Thomas Kern
5
+ # License:: MPL 1.1
6
+ # Project:: ai4r
7
+ # Url:: http://ai4r.rubyforge.org/
8
+ #
9
+ # You can redistribute it and/or modify it under the terms of
10
+ # the Mozilla Public License version 1.1 as published by the
11
+ # Mozilla Foundation at http://www.mozilla.org/MPL/MPL-1.1.txt
12
+
13
+ require File.dirname(__FILE__) + '/../../lib/ai4r/som/som'
14
+ require 'test/unit'
15
+
16
+ module Ai4r
17
+
18
+ module Som
19
+
20
+ class SomTest < Test::Unit::TestCase
21
+
22
+ def setup
23
+ @som = Som.new 2, 5, Layer.new(3, 3)
24
+ @som.initiate_map
25
+ end
26
+
27
+ def test_random_initiation
28
+ assert_equal 25, @som.nodes.length
29
+
30
+ @som.nodes.each do |node|
31
+ assert_equal 2, node.weights.length
32
+
33
+ node.weights.each do |weight|
34
+ assert weight < 1
35
+ assert weight > 0
36
+ end
37
+
38
+ end
39
+ end
40
+
41
+
42
+ # bmu
43
+
44
+ def test_find_bmu
45
+ bmu = @som.find_bmu([0.5, 0.5])
46
+ end
47
+
48
+ def test_adjust_nodes
49
+ @som.adjust_nodes [1, 2], @som.find_bmu([0.5, 0.5]), 2, 0.1
50
+ end
51
+
52
+ def test_access_to_nodes
53
+ assert_raise Exception do
54
+ @som.get_node(5, 5)
55
+ end
56
+
57
+ assert_raise Exception do
58
+ @som.get_node(5, -3)
59
+ end
60
+
61
+ assert_equal Node, @som.get_node(0, 0).class
62
+ end
63
+
64
+ def test_distance_for_same_row
65
+ assert_equal 2, distancer(0, 0, 0, 2)
66
+ assert_equal 2, distancer(0, 4, 0, 2)
67
+ assert_equal 0, distancer(0, 0, 0, 0)
68
+ end
69
+
70
+ def test_distance_for_same_column
71
+ assert_equal 1, distancer(0, 0, 1, 0)
72
+ assert_equal 2, distancer(2, 0, 0, 0)
73
+ end
74
+
75
+ def test_distance_for_diagonally_point
76
+ assert_equal 1, distancer(1, 0, 0, 1)
77
+ assert_equal 2, distancer(2, 2, 0, 0)
78
+ assert_equal 2, distancer(3, 2, 1, 4)
79
+ end
80
+
81
+ def test_distance_for_screwed_diagonally_point
82
+ assert_equal 2, distancer(0, 0, 2, 1)
83
+ assert_equal 4, distancer(3, 4, 1, 0)
84
+ assert_equal 2, distancer(3, 2, 1, 3)
85
+ end
86
+
87
+ private
88
+
89
+ def distancer(x1, y1, x2, y2)
90
+ @som.get_node(x1, y1).distance_to_node(@som.get_node(x2, y2))
91
+ end
92
+
93
+ end
94
+
95
+ end
96
+
97
+ end
metadata ADDED
@@ -0,0 +1,238 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nirvdrum-ai4r
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.9.1
5
+ platform: ruby
6
+ authors:
7
+ - Sergio Fierens
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-08-01 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Describe your gem
17
+ email: sergio@jadeferret.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.rdoc
24
+ files:
25
+ - .gitignore
26
+ - .rakeTasks
27
+ - README.rdoc
28
+ - Rakefile.rb
29
+ - VERSION
30
+ - ai4r.gemspec
31
+ - change_log
32
+ - examples/classifiers/id3_data.csv
33
+ - examples/classifiers/id3_example.rb
34
+ - examples/classifiers/naive_bayes_data.csv
35
+ - examples/classifiers/naive_bayes_example.rb
36
+ - examples/classifiers/results.txt
37
+ - examples/genetic_algorithm/genetic_algorithm_example.rb
38
+ - examples/genetic_algorithm/travel_cost.csv
39
+ - examples/neural_network/backpropagation_example.rb
40
+ - examples/neural_network/patterns_with_base_noise.rb
41
+ - examples/neural_network/patterns_with_noise.rb
42
+ - examples/neural_network/training_patterns.rb
43
+ - examples/neural_network/xor_example.rb
44
+ - examples/som/som_data.rb
45
+ - examples/som/som_multi_node_example.rb
46
+ - examples/som/som_single_example.rb
47
+ - lib/ai4r.rb
48
+ - lib/ai4r/classifiers/classifier.rb
49
+ - lib/ai4r/classifiers/hyperpipes.rb
50
+ - lib/ai4r/classifiers/id3.rb
51
+ - lib/ai4r/classifiers/multilayer_perceptron.rb
52
+ - lib/ai4r/classifiers/naive_bayes.rb
53
+ - lib/ai4r/classifiers/one_r.rb
54
+ - lib/ai4r/classifiers/prism.rb
55
+ - lib/ai4r/classifiers/zero_r.rb
56
+ - lib/ai4r/clusterers/average_linkage.rb
57
+ - lib/ai4r/clusterers/bisecting_k_means.rb
58
+ - lib/ai4r/clusterers/centroid_linkage.rb
59
+ - lib/ai4r/clusterers/clusterer.rb
60
+ - lib/ai4r/clusterers/complete_linkage.rb
61
+ - lib/ai4r/clusterers/diana.rb
62
+ - lib/ai4r/clusterers/k_means.rb
63
+ - lib/ai4r/clusterers/median_linkage.rb
64
+ - lib/ai4r/clusterers/single_linkage.rb
65
+ - lib/ai4r/clusterers/ward_linkage.rb
66
+ - lib/ai4r/clusterers/weighted_average_linkage.rb
67
+ - lib/ai4r/data/data_set.rb
68
+ - lib/ai4r/data/parameterizable.rb
69
+ - lib/ai4r/data/proximity.rb
70
+ - lib/ai4r/data/statistics.rb
71
+ - lib/ai4r/experiment/classifier_evaluator.rb
72
+ - lib/ai4r/genetic_algorithm/genetic_algorithm.rb
73
+ - lib/ai4r/neural_network/backpropagation.rb
74
+ - lib/ai4r/neural_network/hopfield.rb
75
+ - lib/ai4r/som/layer.rb
76
+ - lib/ai4r/som/node.rb
77
+ - lib/ai4r/som/som.rb
78
+ - lib/ai4r/som/two_phase_layer.rb
79
+ - site/forrest.properties
80
+ - site/forrest.properties.dispatcher.properties
81
+ - site/forrest.properties.xml
82
+ - site/src/documentation/README.txt
83
+ - site/src/documentation/classes/CatalogManager.properties
84
+ - site/src/documentation/content/locationmap.xml
85
+ - site/src/documentation/content/xdocs/downloads.html
86
+ - site/src/documentation/content/xdocs/geneticAlgorithms.xml
87
+ - site/src/documentation/content/xdocs/index.xml
88
+ - site/src/documentation/content/xdocs/machineLearning.xml
89
+ - site/src/documentation/content/xdocs/neuralNetworks.xml
90
+ - site/src/documentation/content/xdocs/site.xml
91
+ - site/src/documentation/content/xdocs/sourceCode.xml
92
+ - site/src/documentation/content/xdocs/tabs.xml
93
+ - site/src/documentation/resources/images/ai4r-logo.png
94
+ - site/src/documentation/resources/images/c.png
95
+ - site/src/documentation/resources/images/c_wbn.png
96
+ - site/src/documentation/resources/images/c_wn.png
97
+ - site/src/documentation/resources/images/ellipse-2.svg
98
+ - site/src/documentation/resources/images/ero.gif
99
+ - site/src/documentation/resources/images/europe2.png
100
+ - site/src/documentation/resources/images/europe3.png
101
+ - site/src/documentation/resources/images/fitness.png
102
+ - site/src/documentation/resources/images/genetic_algorithms_example.png
103
+ - site/src/documentation/resources/images/icon-a.png
104
+ - site/src/documentation/resources/images/icon-b.png
105
+ - site/src/documentation/resources/images/icon.png
106
+ - site/src/documentation/resources/images/jadeferret.png
107
+ - site/src/documentation/resources/images/my_email.png
108
+ - site/src/documentation/resources/images/neural_network_example.png
109
+ - site/src/documentation/resources/images/project-logo.png
110
+ - site/src/documentation/resources/images/rubyforge.png
111
+ - site/src/documentation/resources/images/s.png
112
+ - site/src/documentation/resources/images/s_wbn.png
113
+ - site/src/documentation/resources/images/s_wn.png
114
+ - site/src/documentation/resources/images/sigmoid.png
115
+ - site/src/documentation/resources/images/sub-dir/icon-c.png
116
+ - site/src/documentation/resources/images/t.png
117
+ - site/src/documentation/resources/images/t_wbn.png
118
+ - site/src/documentation/resources/images/t_wn.png
119
+ - site/src/documentation/resources/schema/catalog.xcat
120
+ - site/src/documentation/resources/schema/hello-v10.dtd
121
+ - site/src/documentation/resources/schema/symbols-project-v10.ent
122
+ - site/src/documentation/resources/stylesheets/hello2document.xsl
123
+ - site/src/documentation/sitemap.xmap
124
+ - site/src/documentation/skinconf.xml
125
+ - site/src/documentation/translations/langcode.xml
126
+ - site/src/documentation/translations/languages_de.xml
127
+ - site/src/documentation/translations/languages_en.xml
128
+ - site/src/documentation/translations/languages_es.xml
129
+ - site/src/documentation/translations/languages_fr.xml
130
+ - site/src/documentation/translations/languages_nl.xml
131
+ - site/src/documentation/translations/menu.xml
132
+ - site/src/documentation/translations/menu_af.xml
133
+ - site/src/documentation/translations/menu_de.xml
134
+ - site/src/documentation/translations/menu_es.xml
135
+ - site/src/documentation/translations/menu_fr.xml
136
+ - site/src/documentation/translations/menu_it.xml
137
+ - site/src/documentation/translations/menu_nl.xml
138
+ - site/src/documentation/translations/menu_no.xml
139
+ - site/src/documentation/translations/menu_ru.xml
140
+ - site/src/documentation/translations/menu_sk.xml
141
+ - site/src/documentation/translations/tabs.xml
142
+ - site/src/documentation/translations/tabs_de.xml
143
+ - site/src/documentation/translations/tabs_es.xml
144
+ - site/src/documentation/translations/tabs_fr.xml
145
+ - site/src/documentation/translations/tabs_nl.xml
146
+ - test/classifiers/hyperpipes_test.rb
147
+ - test/classifiers/id3_test.rb
148
+ - test/classifiers/multilayer_perceptron_test.rb
149
+ - test/classifiers/naive_bayes_test.rb
150
+ - test/classifiers/one_r_test.rb
151
+ - test/classifiers/prism_test.rb
152
+ - test/classifiers/zero_r_test.rb
153
+ - test/clusterers/average_linkage_test.rb
154
+ - test/clusterers/bisecting_k_means_test.rb
155
+ - test/clusterers/centroid_linkage_test.rb
156
+ - test/clusterers/complete_linkage_test.rb
157
+ - test/clusterers/diana_test.rb
158
+ - test/clusterers/k_means_test.rb
159
+ - test/clusterers/median_linkage_test.rb
160
+ - test/clusterers/single_linkage_test.rb
161
+ - test/clusterers/ward_linkage_test.rb
162
+ - test/clusterers/weighted_average_linkage_test.rb
163
+ - test/data/data_set.csv
164
+ - test/data/data_set_test.rb
165
+ - test/data/proximity_test.rb
166
+ - test/data/statistics_data_set.csv
167
+ - test/data/statistics_test.rb
168
+ - test/experiment/classifier_evaluator_test.rb
169
+ - test/genetic_algorithm/chromosome_test.rb
170
+ - test/genetic_algorithm/genetic_algorithm_test.rb
171
+ - test/neural_network/backpropagation_test.rb
172
+ - test/neural_network/hopfield_test.rb
173
+ - test/som/som_test.rb
174
+ has_rdoc: false
175
+ homepage: http://ai4r.rubyforge.org
176
+ licenses:
177
+ post_install_message:
178
+ rdoc_options:
179
+ - --charset=UTF-8
180
+ require_paths:
181
+ - lib
182
+ required_ruby_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: "0"
187
+ version:
188
+ required_rubygems_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: "0"
193
+ version:
194
+ requirements: []
195
+
196
+ rubyforge_project: ai4r
197
+ rubygems_version: 1.3.5
198
+ signing_key:
199
+ specification_version: 3
200
+ summary: Ruby implementations of algorithms covering several Artificial intelligence fields, including Genetic algorithms, Neural Networks, machine learning, and clustering.
201
+ test_files:
202
+ - test/classifiers/hyperpipes_test.rb
203
+ - test/classifiers/id3_test.rb
204
+ - test/classifiers/multilayer_perceptron_test.rb
205
+ - test/classifiers/naive_bayes_test.rb
206
+ - test/classifiers/one_r_test.rb
207
+ - test/classifiers/prism_test.rb
208
+ - test/classifiers/zero_r_test.rb
209
+ - test/clusterers/average_linkage_test.rb
210
+ - test/clusterers/bisecting_k_means_test.rb
211
+ - test/clusterers/centroid_linkage_test.rb
212
+ - test/clusterers/complete_linkage_test.rb
213
+ - test/clusterers/diana_test.rb
214
+ - test/clusterers/k_means_test.rb
215
+ - test/clusterers/median_linkage_test.rb
216
+ - test/clusterers/single_linkage_test.rb
217
+ - test/clusterers/ward_linkage_test.rb
218
+ - test/clusterers/weighted_average_linkage_test.rb
219
+ - test/data/data_set_test.rb
220
+ - test/data/proximity_test.rb
221
+ - test/data/statistics_test.rb
222
+ - test/experiment/classifier_evaluator_test.rb
223
+ - test/genetic_algorithm/chromosome_test.rb
224
+ - test/genetic_algorithm/genetic_algorithm_test.rb
225
+ - test/neural_network/backpropagation_test.rb
226
+ - test/neural_network/hopfield_test.rb
227
+ - test/som/som_test.rb
228
+ - examples/classifiers/id3_example.rb
229
+ - examples/classifiers/naive_bayes_example.rb
230
+ - examples/genetic_algorithm/genetic_algorithm_example.rb
231
+ - examples/neural_network/backpropagation_example.rb
232
+ - examples/neural_network/patterns_with_base_noise.rb
233
+ - examples/neural_network/patterns_with_noise.rb
234
+ - examples/neural_network/training_patterns.rb
235
+ - examples/neural_network/xor_example.rb
236
+ - examples/som/som_data.rb
237
+ - examples/som/som_multi_node_example.rb
238
+ - examples/som/som_single_example.rb