ai4r 1.6 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,7 +8,6 @@
8
8
  # Mozilla Foundation at http://www.mozilla.org/MPL/MPL-1.1.txt
9
9
 
10
10
  require 'set'
11
- require File.dirname(__FILE__) + '/../data/constants'
12
11
  require File.dirname(__FILE__) + '/../data/data_set'
13
12
  require File.dirname(__FILE__) + '/../classifiers/classifier'
14
13
 
@@ -29,12 +28,13 @@ module Ai4r
29
28
  # as parameter. The last attribute of each item is considered as
30
29
  # the item class.
31
30
  def build(data_set)
31
+ data_set.check_not_empty
32
32
  @data_set = data_set
33
33
  @domains = data_set.build_domains
34
34
 
35
35
  @pipes = {}
36
- @domains.last.each {|cat| @pipes[cat] = build_pipe(@domains)}
37
- @data_set.data_item.each {|item| update_pipe(@pipes[item.last], item) }
36
+ @domains.last.each {|cat| @pipes[cat] = build_pipe(@data_set)}
37
+ @data_set.data_items.each {|item| update_pipe(@pipes[item.last], item) }
38
38
 
39
39
  return self
40
40
  end
@@ -47,7 +47,7 @@ module Ai4r
47
47
  @pipes.each do |category, pipe|
48
48
  pipe.each_with_index do |bounds, i|
49
49
  if data[i].is_a? Numeric
50
- votes[category]+=1 if data[i]>bounds[:min] && data[i]<bounds[:max]
50
+ votes[category]+=1 if data[i]>=bounds[:min] && data[i]<=bounds[:max]
51
51
  else
52
52
  votes[category]+=1 if bounds[data[i]]
53
53
  end
@@ -79,15 +79,15 @@ module Ai4r
79
79
  pipe.each_with_index do |bounds, i|
80
80
  rule = "votes['#{category}'] += 1 "
81
81
  if data[i].is_a? Numeric
82
- rule += "if #{labels[i]} > #{bounds[:min]} && #{labels[i]} < #{bounds[:max]}"
82
+ rule += "if #{labels[i]} >= #{bounds[:min]} && #{labels[i]} <= #{bounds[:max]}"
83
83
  else
84
- rule += "if #{bounds.inspect}['#{labels[i]}']"
84
+ rule += "if #{bounds.inspect}[#{labels[i]}]"
85
85
  end
86
86
  rules << rule
87
87
  end
88
88
  end
89
- rules << "votes.to_a.max {|x, y| x.last <=> y.last}.first"
90
- return rules.join('\n')
89
+ rules << "#{labels.last} = votes.to_a.max {|x, y| x.last <=> y.last}.first"
90
+ return rules.join("\n")
91
91
  end
92
92
 
93
93
  protected
@@ -95,7 +95,7 @@ module Ai4r
95
95
  def build_pipe(data_set)
96
96
  data_set.data_items.first[0...-1].collect do |att|
97
97
  if att.is_a? Numeric
98
- {:min=>POSITIVE_INFINITY, :max=>NEGATIVE_INFINITY}
98
+ {:min=>1.0/0, :max=>-1.0/0}
99
99
  else
100
100
  Hash.new(false)
101
101
  end
@@ -104,7 +104,7 @@ module Ai4r
104
104
 
105
105
  def update_pipe(pipe, data_item)
106
106
  data_item[0...-1].each_with_index do |att, i|
107
- if att.first.is_a? Numeric
107
+ if att.is_a? Numeric
108
108
  pipe[i][:min] = att if att < pipe[i][:min]
109
109
  pipe[i][:max] = att if att > pipe[i][:max]
110
110
  else
@@ -121,36 +121,40 @@ module Ai4r
121
121
  return self
122
122
  end
123
123
 
124
- # Returns an array with the domain of each attribute (Set instance
125
- # containing all possible values)
124
+ # Returns an array with the domain of each attribute:
125
+ # * Set instance containing all possible values for nominal attributes
126
+ # * Array with min and max values for numeric attributes (i.e. [min, max])
127
+ #
126
128
  # Return example:
127
129
  # => [#<Set: {"New York", "Chicago"}>,
128
130
  # #<Set: {"<30", "[30-50)", "[50-80]", ">80"}>,
129
- # #<Set: {"M", "F"}>,
131
+ # #<Set: {"M", "F"}>,
132
+ # [5, 85],
130
133
  # #<Set: {"Y", "N"}>]
131
134
  def build_domains
132
- domains = Array.new(num_attributes) { Set.new }
133
- @data_items.each do |data|
134
- data.each_index {|attr_index| domains[attr_index] << data[attr_index]}
135
- end
136
- return domains
135
+ @data_labels.collect {|attr_label| build_domain(attr_label) }
137
136
  end
138
137
 
139
138
  # Returns a Set instance containing all possible values for an attribute
140
139
  # The parameter can be an attribute label or index (0 based).
140
+ # * Set instance containing all possible values for nominal attributes
141
+ # * Array with min and max values for numeric attributes (i.e. [min, max])
141
142
  #
142
143
  # build_domain("city")
143
144
  # => #<Set: {"New York", "Chicago"}>
145
+ #
146
+ # build_domain("age")
147
+ # => [5, 85]
144
148
  #
145
149
  # build_domain(2) # In this example, the third attribute is gender
146
150
  # => #<Set: {"M", "F"}>
147
151
  def build_domain(attr)
148
152
  index = get_index(attr)
149
- domain = Set.new
150
- @data_items.each do |data|
151
- domain << data[index]
153
+ if @data_items.first[index].is_a?(Numeric)
154
+ return [Statistics.min(self, index), Statistics.max(self, index)]
155
+ else
156
+ return @data_items.inject(Set.new){|domain, x| domain << x[index]}
152
157
  end
153
- return domain
154
158
  end
155
159
 
156
160
  # Returns attributes number, including class attribute
@@ -0,0 +1,84 @@
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/classifiers/hyperpipes'
11
+ require 'test/unit'
12
+
13
+ class Ai4r::Classifiers::Hyperpipes
14
+ attr_accessor :data_set, :pipes
15
+ end
16
+
17
+ include Ai4r::Classifiers
18
+ include Ai4r::Data
19
+
20
+ class HyperpipesTest < Test::Unit::TestCase
21
+
22
+ @@data_labels = [ 'city', 'age', 'gender', 'marketing_target' ]
23
+
24
+ @@data_items = [['New York', 25, 'M', 'Y'],
25
+ ['New York', 23, 'M', 'Y'],
26
+ ['New York', 18, 'M', 'Y'],
27
+ ['Chicago', 43, 'M', 'Y'],
28
+ ['New York', 34, 'F', 'N'],
29
+ ['Chicago', 33, 'F', 'Y'],
30
+ ['New York', 31, 'F', 'N'],
31
+ ['Chicago', 55, 'M', 'N'],
32
+ ['New York', 58, 'F', 'N'],
33
+ ['New York', 59, 'M', 'N'],
34
+ ['Chicago', 71, 'M', 'N'],
35
+ ['New York', 60, 'F', 'N'],
36
+ ['Chicago', 85, 'F', 'Y']
37
+ ]
38
+
39
+
40
+ def setup
41
+ Hyperpipes.send(:public, *Hyperpipes.protected_instance_methods)
42
+ @data_set = DataSet.new(:data_items => @@data_items, :data_labels => @@data_labels)
43
+ end
44
+
45
+ def test_build_pipe
46
+ classifier = Hyperpipes.new
47
+ assert_equal [{}, {:max=>-1.0/0, :min=>1.0/0}, {}], classifier.build_pipe(@data_set)
48
+ end
49
+
50
+ def test_get_rules
51
+
52
+ end
53
+
54
+ def test_build
55
+ assert_raise(ArgumentError) { Hyperpipes.new.build(DataSet.new) }
56
+ classifier = Hyperpipes.new.build(@data_set)
57
+ assert classifier.pipes.include?("Y")
58
+ assert classifier.pipes.include?("N")
59
+ end
60
+
61
+ def test_eval
62
+ classifier = Hyperpipes.new.build(@data_set)
63
+ assert classifier
64
+ assert_equal('N', classifier.eval(['Chicago', 55, 'M']))
65
+ assert_equal('N', classifier.eval(['New York', 35, 'F']))
66
+ assert_equal('Y', classifier.eval(['New York', 25, 'M']))
67
+ assert_equal('Y', classifier.eval(['Chicago', 85, 'F']))
68
+ end
69
+
70
+ def test_get_rules
71
+ classifier = Hyperpipes.new.build(@data_set)
72
+ age = 28
73
+ gender = "M"
74
+ marketing_target = nil
75
+ eval classifier.get_rules
76
+ assert_equal 'Y', marketing_target
77
+ age = 44
78
+ city='New York'
79
+ eval classifier.get_rules
80
+ assert_equal 'N', marketing_target
81
+ end
82
+ end
83
+
84
+
@@ -1,69 +1,69 @@
1
- # Author:: Sergio Fierens (implementation)
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 'test/unit'
11
- require File.dirname(__FILE__) + '/../../lib/ai4r/clusterers/diana'
12
-
13
- class Ai4r::Clusterers::Diana
14
- attr_accessor :data_set, :number_of_clusters, :clusters
15
- end
16
-
17
- class DianaTest < Test::Unit::TestCase
18
-
19
- @@data = [ [10, 3], [3, 10], [2, 8], [2, 5], [3, 8], [10, 3],
20
- [1, 3], [8, 1], [2, 9], [2, 5], [3, 3], [9, 4]]
21
-
22
- include Ai4r::Clusterers
23
- include Ai4r::Data
24
-
25
- def setup
26
- Diana.send(:public, *Diana.protected_instance_methods)
27
- @data_set = DataSet.new(:data_items => @@data.clone)
28
- end
29
-
30
- def test_build
31
- clusterer = Diana.new.build(@data_set, 4)
32
- assert_equal 4, clusterer.clusters.length
33
- end
34
-
35
- def test_eval
36
- clusterer = Diana.new.build(@data_set, 4)
37
- assert_equal 0, clusterer.eval([0, 0])
38
- assert_equal 1, clusterer.eval([9, 3])
39
- assert_equal 2, clusterer.eval([0,10])
40
- assert_equal 3, clusterer.eval([8, 0])
41
- end
42
-
43
- def test_cluster_diameter
44
- clusterer = Diana.new
45
- assert_equal 106, clusterer.cluster_diameter(@data_set)
46
- assert_equal 98, clusterer.cluster_diameter(@data_set[0..2])
47
- end
48
-
49
- def test_max_diameter_cluster
50
- clusterer = Diana.new
51
- assert_equal 0, clusterer.max_diameter_cluster([@data_set, @data_set[0..2]])
52
- assert_equal 1, clusterer.max_diameter_cluster([@data_set[0..2], @data_set])
53
- end
54
-
55
- def test_init_splinter_cluster
56
- clusterer = Diana.new
57
- assert_equal [10,3], clusterer.
58
- init_splinter_cluster(@data_set).data_items[0]
59
- end
60
-
61
- def test_max_distance_difference
62
- clusterer = Diana.new
63
- data_set_a = @data_set[1..-1]
64
- data_set_b = @data_set[0]
65
- assert_equal [63.7, 4], clusterer.
66
- max_distance_difference(data_set_a, data_set_b)
67
- end
68
-
1
+ # Author:: Sergio Fierens (implementation)
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 'test/unit'
11
+ require File.dirname(__FILE__) + '/../../lib/ai4r/clusterers/diana'
12
+
13
+ class Ai4r::Clusterers::Diana
14
+ attr_accessor :data_set, :number_of_clusters, :clusters
15
+ end
16
+
17
+ class DianaTest < Test::Unit::TestCase
18
+
19
+ @@data = [ [10, 3], [3, 10], [2, 8], [2, 5], [3, 8], [10, 3],
20
+ [1, 3], [8, 1], [2, 9], [2, 5], [3, 3], [9, 4]]
21
+
22
+ include Ai4r::Clusterers
23
+ include Ai4r::Data
24
+
25
+ def setup
26
+ Diana.send(:public, *Diana.protected_instance_methods)
27
+ @data_set = DataSet.new(:data_items => @@data.clone)
28
+ end
29
+
30
+ def test_build
31
+ clusterer = Diana.new.build(@data_set, 4)
32
+ assert_equal 4, clusterer.clusters.length
33
+ end
34
+
35
+ def test_eval
36
+ clusterer = Diana.new.build(@data_set, 4)
37
+ assert_equal 0, clusterer.eval([0, 0])
38
+ assert_equal 1, clusterer.eval([9, 3])
39
+ assert_equal 2, clusterer.eval([0,10])
40
+ assert_equal 3, clusterer.eval([8, 0])
41
+ end
42
+
43
+ def test_cluster_diameter
44
+ clusterer = Diana.new
45
+ assert_equal 106, clusterer.cluster_diameter(@data_set)
46
+ assert_equal 98, clusterer.cluster_diameter(@data_set[0..2])
47
+ end
48
+
49
+ def test_max_diameter_cluster
50
+ clusterer = Diana.new
51
+ assert_equal 0, clusterer.max_diameter_cluster([@data_set, @data_set[0..2]])
52
+ assert_equal 1, clusterer.max_diameter_cluster([@data_set[0..2], @data_set])
53
+ end
54
+
55
+ def test_init_splinter_cluster
56
+ clusterer = Diana.new
57
+ assert_equal [10,3], clusterer.
58
+ init_splinter_cluster(@data_set).data_items[0]
59
+ end
60
+
61
+ def test_max_distance_difference
62
+ clusterer = Diana.new
63
+ data_set_a = @data_set[1..-1]
64
+ data_set_b = @data_set[0]
65
+ assert_equal [63.7, 4], clusterer.
66
+ max_distance_difference(data_set_a, data_set_b)
67
+ end
68
+
69
69
  end
@@ -23,19 +23,21 @@ module Ai4r
23
23
  def test_build_domains
24
24
  domains = [ Set.new(["New York", "Chicago"]),
25
25
  Set.new(["M", "F"]),
26
+ [5, 85],
26
27
  Set.new(["Y", "N"]) ]
27
- data = [ [ "New York", "M", "Y"],
28
- [ "Chicago", "M", "Y"],
29
- [ "New York", "F", "Y"],
30
- [ "New York", "M", "N"],
31
- [ "Chicago", "M", "N"],
32
- [ "Chicago", "F", "Y"] ]
33
- labels = ["city", "gender", "result"]
28
+ data = [ [ "New York", "M", 23, "Y"],
29
+ [ "Chicago", "M", 85, "Y"],
30
+ [ "New York", "F", 32, "Y"],
31
+ [ "New York", "M", 5, "N"],
32
+ [ "Chicago", "M", 15, "N"],
33
+ [ "Chicago", "F", 45, "Y"] ]
34
+ labels = ["city", "gender", "age", "result"]
34
35
  set = DataSet.new({:data_items => data, :data_labels => labels})
35
36
  assert_equal domains, set.build_domains
36
37
  assert_equal domains[0], set.build_domain("city")
37
38
  assert_equal domains[1], set.build_domain(1)
38
- assert_equal domains[2], set.build_domain("result")
39
+ assert_equal domains[2], set.build_domain("age")
40
+ assert_equal domains[3], set.build_domain("result")
39
41
  end
40
42
 
41
43
  def test_set_data_labels
metadata CHANGED
@@ -1,116 +1,123 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: ai4r
5
3
  version: !ruby/object:Gem::Version
6
- version: "1.6"
7
- date: 2009-04-08 00:00:00 +01:00
8
- summary: Ruby implementations of algorithms covering several Artificial intelligence fields, including Genetic algorithms, Neural Networks, machine learning, and clustering.
9
- require_paths:
10
- - lib
11
- email: sergio@jadeferret.com
12
- homepage: http://ai4r.rubyforge.org
13
- rubyforge_project: ai4r
14
- description:
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 1.6.1
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Sergio Fierens
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-04-09 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: sergio@jadeferret.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.rdoc
31
24
  files:
32
25
  - examples/clusterers
33
26
  - examples/clusterers/simple_website_clustering.rb
27
+ - examples/neural_network
28
+ - examples/neural_network/backpropagation_example.rb
29
+ - examples/neural_network/patterns_with_base_noise.rb
30
+ - examples/neural_network/xor_example.rb
31
+ - examples/neural_network/patterns_with_noise.rb
32
+ - examples/neural_network/training_patterns.rb
34
33
  - examples/decision_trees
35
34
  - examples/decision_trees/data_set.csv
36
- - examples/decision_trees/id3_example.rb
37
35
  - examples/decision_trees/results.txt
36
+ - examples/decision_trees/id3_example.rb
38
37
  - examples/genetic_algorithm
39
38
  - examples/genetic_algorithm/genetic_algorithm_example.rb
40
39
  - examples/genetic_algorithm/travel_cost.csv
41
- - examples/neural_network
42
- - examples/neural_network/backpropagation_example.rb
43
- - examples/neural_network/patterns_with_base_noise.rb
44
- - examples/neural_network/patterns_with_noise.rb
45
- - examples/neural_network/training_patterns.rb
46
- - examples/neural_network/xor_example.rb
40
+ - lib/ai4r.rb
47
41
  - lib/ai4r
48
- - lib/ai4r/classifiers
49
- - lib/ai4r/classifiers/classifier.rb
50
- - lib/ai4r/classifiers/hyperpipes.rb
51
- - lib/ai4r/classifiers/id3.rb
52
- - lib/ai4r/classifiers/multilayer_perceptron.rb
53
- - lib/ai4r/classifiers/one_r.rb
54
- - lib/ai4r/classifiers/prism.rb
55
- - lib/ai4r/classifiers/zero_r.rb
56
42
  - lib/ai4r/clusterers
57
43
  - lib/ai4r/clusterers/average_linkage.rb
58
- - lib/ai4r/clusterers/bisecting_k_means.rb
44
+ - lib/ai4r/clusterers/median_linkage.rb
59
45
  - lib/ai4r/clusterers/centroid_linkage.rb
60
- - lib/ai4r/clusterers/clusterer.rb
46
+ - lib/ai4r/clusterers/weighted_average_linkage.rb
61
47
  - lib/ai4r/clusterers/complete_linkage.rb
62
48
  - lib/ai4r/clusterers/diana.rb
63
- - lib/ai4r/clusterers/k_means.rb
64
- - lib/ai4r/clusterers/median_linkage.rb
65
- - lib/ai4r/clusterers/single_linkage.rb
49
+ - lib/ai4r/clusterers/bisecting_k_means.rb
66
50
  - lib/ai4r/clusterers/ward_linkage.rb
67
- - lib/ai4r/clusterers/weighted_average_linkage.rb
68
- - lib/ai4r/data
69
- - lib/ai4r/data/constants.rb
70
- - lib/ai4r/data/data_set.rb
71
- - lib/ai4r/data/parameterizable.rb
72
- - lib/ai4r/data/proximity.rb
73
- - lib/ai4r/data/statistics.rb
51
+ - lib/ai4r/clusterers/single_linkage.rb
52
+ - lib/ai4r/clusterers/k_means.rb
53
+ - lib/ai4r/clusterers/clusterer.rb
74
54
  - lib/ai4r/experiment
75
55
  - lib/ai4r/experiment/classifier_evaluator.rb
76
- - lib/ai4r/genetic_algorithm
77
- - lib/ai4r/genetic_algorithm/genetic_algorithm.rb
78
56
  - lib/ai4r/neural_network
79
57
  - lib/ai4r/neural_network/backpropagation.rb
80
- - lib/ai4r.rb
58
+ - lib/ai4r/classifiers
59
+ - lib/ai4r/classifiers/hyperpipes.rb
60
+ - lib/ai4r/classifiers/multilayer_perceptron.rb
61
+ - lib/ai4r/classifiers/prism.rb
62
+ - lib/ai4r/classifiers/one_r.rb
63
+ - lib/ai4r/classifiers/zero_r.rb
64
+ - lib/ai4r/classifiers/classifier.rb
65
+ - lib/ai4r/classifiers/id3.rb
66
+ - lib/ai4r/genetic_algorithm
67
+ - lib/ai4r/genetic_algorithm/genetic_algorithm.rb
68
+ - lib/ai4r/data
69
+ - lib/ai4r/data/parameterizable.rb
70
+ - lib/ai4r/data/statistics.rb
71
+ - lib/ai4r/data/data_set.rb
72
+ - lib/ai4r/data/proximity.rb
81
73
  - README.rdoc
74
+ has_rdoc: true
75
+ homepage: http://ai4r.rubyforge.org
76
+ post_install_message:
77
+ rdoc_options: []
78
+
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: "0"
86
+ version:
87
+ required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: "0"
92
+ version:
93
+ requirements: []
94
+
95
+ rubyforge_project: ai4r
96
+ rubygems_version: 1.3.1
97
+ signing_key:
98
+ specification_version: 2
99
+ summary: Ruby implementations of algorithms covering several Artificial intelligence fields, including Genetic algorithms, Neural Networks, machine learning, and clustering.
82
100
  test_files:
83
- - test/classifiers/id3_test.rb
84
- - test/classifiers/multilayer_perceptron_test.rb
85
- - test/classifiers/one_r_test.rb
86
- - test/classifiers/prism_test.rb
87
- - test/classifiers/zero_r_test.rb
88
- - test/clusterers/average_linkage_test.rb
89
- - test/clusterers/bisecting_k_means_test.rb
90
- - test/clusterers/centroid_linkage_test.rb
91
- - test/clusterers/complete_linkage_test.rb
101
+ - test/clusterers/single_linkage_test.rb
102
+ - test/clusterers/weighted_average_linkage_test.rb
92
103
  - test/clusterers/diana_test.rb
93
- - test/clusterers/k_means_test.rb
104
+ - test/clusterers/average_linkage_test.rb
94
105
  - test/clusterers/median_linkage_test.rb
95
- - test/clusterers/single_linkage_test.rb
96
106
  - test/clusterers/ward_linkage_test.rb
97
- - test/clusterers/weighted_average_linkage_test.rb
98
- - test/data/data_set_test.rb
99
- - test/data/proximity_test.rb
100
- - test/data/statistics_test.rb
107
+ - test/clusterers/complete_linkage_test.rb
108
+ - test/clusterers/centroid_linkage_test.rb
109
+ - test/clusterers/k_means_test.rb
110
+ - test/clusterers/bisecting_k_means_test.rb
101
111
  - test/experiment/classifier_evaluator_test.rb
102
- - test/genetic_algorithm/chromosome_test.rb
103
- - test/genetic_algorithm/genetic_algorithm_test.rb
104
112
  - test/neural_network/backpropagation_test.rb
105
- rdoc_options: []
106
-
107
- extra_rdoc_files:
108
- - README.rdoc
109
- executables: []
110
-
111
- extensions: []
112
-
113
- requirements: []
114
-
115
- dependencies: []
116
-
113
+ - test/classifiers/zero_r_test.rb
114
+ - test/classifiers/multilayer_perceptron_test.rb
115
+ - test/classifiers/prism_test.rb
116
+ - test/classifiers/one_r_test.rb
117
+ - test/classifiers/hyperpipes_test.rb
118
+ - test/classifiers/id3_test.rb
119
+ - test/genetic_algorithm/genetic_algorithm_test.rb
120
+ - test/genetic_algorithm/chromosome_test.rb
121
+ - test/data/statistics_test.rb
122
+ - test/data/proximity_test.rb
123
+ - test/data/data_set_test.rb
@@ -1,18 +0,0 @@
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
- module Ai4r
11
- module Data
12
-
13
- POSITIVE_INFINTY = 1.0/0
14
-
15
- NEGATIVE_INFINTY = -1.0/0
16
-
17
- end
18
- end