weka 0.1.0-java

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 (55) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +15 -0
  5. data/CODE_OF_CONDUCT.md +13 -0
  6. data/Gemfile +4 -0
  7. data/Jarfile +1 -0
  8. data/Jarfile.lock +17 -0
  9. data/MIT-LICENSE.txt +19 -0
  10. data/README.md +687 -0
  11. data/Rakefile +21 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +7 -0
  14. data/lib/weka.rb +32 -0
  15. data/lib/weka/attribute_selection.rb +1 -0
  16. data/lib/weka/attribute_selection/attribute_selection.rb +11 -0
  17. data/lib/weka/attribute_selection/evaluator.rb +29 -0
  18. data/lib/weka/attribute_selection/search.rb +14 -0
  19. data/lib/weka/class_builder.rb +88 -0
  20. data/lib/weka/classifiers.rb +1 -0
  21. data/lib/weka/classifiers/bayes.rb +16 -0
  22. data/lib/weka/classifiers/evaluation.rb +37 -0
  23. data/lib/weka/classifiers/functions.rb +21 -0
  24. data/lib/weka/classifiers/lazy.rb +13 -0
  25. data/lib/weka/classifiers/meta.rb +29 -0
  26. data/lib/weka/classifiers/rules.rb +16 -0
  27. data/lib/weka/classifiers/trees.rb +18 -0
  28. data/lib/weka/classifiers/utils.rb +138 -0
  29. data/lib/weka/clusterers.rb +16 -0
  30. data/lib/weka/clusterers/cluster_evaluation.rb +14 -0
  31. data/lib/weka/clusterers/utils.rb +103 -0
  32. data/lib/weka/concerns.rb +18 -0
  33. data/lib/weka/concerns/buildable.rb +19 -0
  34. data/lib/weka/concerns/describable.rb +30 -0
  35. data/lib/weka/concerns/optionizable.rb +49 -0
  36. data/lib/weka/concerns/persistent.rb +16 -0
  37. data/lib/weka/core.rb +6 -0
  38. data/lib/weka/core/attribute.rb +24 -0
  39. data/lib/weka/core/converters.rb +17 -0
  40. data/lib/weka/core/dense_instance.rb +68 -0
  41. data/lib/weka/core/instances.rb +199 -0
  42. data/lib/weka/core/loader.rb +32 -0
  43. data/lib/weka/core/saver.rb +34 -0
  44. data/lib/weka/exceptions.rb +6 -0
  45. data/lib/weka/filters.rb +1 -0
  46. data/lib/weka/filters/filter.rb +9 -0
  47. data/lib/weka/filters/supervised/attribute.rb +26 -0
  48. data/lib/weka/filters/supervised/instance.rb +16 -0
  49. data/lib/weka/filters/unsupervised/attribute.rb +67 -0
  50. data/lib/weka/filters/unsupervised/instance.rb +25 -0
  51. data/lib/weka/filters/utils.rb +17 -0
  52. data/lib/weka/jars.rb +19 -0
  53. data/lib/weka/version.rb +3 -0
  54. data/weka.gemspec +32 -0
  55. metadata +183 -0
@@ -0,0 +1,32 @@
1
+ require 'weka/core/converters'
2
+
3
+ module Weka
4
+ module Core
5
+ class Loader
6
+ java_import 'java.io.File'
7
+
8
+ class << self
9
+ def load_arff(file)
10
+ load_with(Converters::ArffLoader, file: file)
11
+ end
12
+
13
+ def load_csv(file)
14
+ load_with(Converters::CSVLoader, file: file)
15
+ end
16
+
17
+ def load_json(file)
18
+ load_with(Converters::JSONLoader, file: file)
19
+ end
20
+
21
+ private
22
+
23
+ def load_with(loader_class, file:)
24
+ loader = loader_class.new
25
+ loader.source = File.new(file)
26
+ loader.data_set
27
+ end
28
+ end
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,34 @@
1
+ require 'weka/core/converters'
2
+
3
+ module Weka
4
+ module Core
5
+ class Saver
6
+ java_import 'java.io.File'
7
+
8
+ class << self
9
+ def save_arff(file:, instances:)
10
+ save_with(Converters::ArffSaver, file: file, instances: instances)
11
+ end
12
+
13
+ def save_csv(file:, instances:)
14
+ save_with(Converters::CSVSaver, file: file, instances: instances)
15
+ end
16
+
17
+ def save_json(file:, instances:)
18
+ save_with(Converters::JSONSaver, file: file, instances: instances)
19
+ end
20
+
21
+ private
22
+
23
+ def save_with(saver_class, file:, instances:)
24
+ saver = saver_class.new
25
+ saver.instances = instances
26
+ saver.file = File.new(file)
27
+
28
+ saver.write_batch
29
+ end
30
+ end
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,6 @@
1
+ module Weka
2
+ class Error < StandardError; end
3
+
4
+ class UnassignedClassError < Error; end
5
+ class UnassignedTrainingInstancesError < Error; end
6
+ end
@@ -0,0 +1 @@
1
+ Weka.require_all :filters
@@ -0,0 +1,9 @@
1
+ module Weka
2
+ module Filters
3
+ java_import 'weka.filters.Filter'
4
+
5
+ class Filter
6
+ end
7
+
8
+ end
9
+ end
@@ -0,0 +1,26 @@
1
+ require 'weka/class_builder'
2
+
3
+ module Weka
4
+ module Filters
5
+ module Supervised
6
+ module Attribute
7
+ include ClassBuilder
8
+
9
+ build_classes :AddClassification,
10
+ :AttributeSelection,
11
+ :ClassConditionalProbabilities,
12
+ :ClassOrder,
13
+ :Discretize,
14
+ :MergeNominalValues,
15
+ :NominalToBinary,
16
+ :PartitionMembership
17
+
18
+ class AttributeSelection
19
+ alias :use_evaluator :set_evaluator
20
+ alias :use_search :set_search
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,16 @@
1
+ require 'weka/class_builder'
2
+
3
+ module Weka
4
+ module Filters
5
+ module Supervised
6
+ module Instance
7
+ include ClassBuilder
8
+
9
+ build_classes :ClassBalancer,
10
+ :Resample,
11
+ :SpreadSubsample,
12
+ :StratifiedRemoveFolds
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,67 @@
1
+ require 'weka/class_builder'
2
+
3
+ module Weka
4
+ module Filters
5
+ module Unsupervised
6
+ module Attribute
7
+ include ClassBuilder
8
+
9
+ build_classes :AbstractTimeSeries,
10
+ :Add,
11
+ :AddCluster,
12
+ :AddExpression,
13
+ :AddID,
14
+ :AddNoise,
15
+ :AddUserFields,
16
+ :AddUserFieldsBeanInfo,
17
+ :AddValues,
18
+ :Center,
19
+ :ChangeDateFormat,
20
+ :ClassAssigner,
21
+ :ClusterMembership,
22
+ :Copy,
23
+ :Discretize,
24
+ :FirstOrder,
25
+ :InterquartileRange,
26
+ :KernelFilter,
27
+ :MakeIndicator,
28
+ :MathExpression,
29
+ :MergeInfrequentNominalValues,
30
+ :MergeManyValues,
31
+ :MergeTwoValues,
32
+ :NominalToBinary,
33
+ :NominalToString,
34
+ :Normalize,
35
+ :NumericCleaner,
36
+ :NumericToBinary,
37
+ :NumericToNominal,
38
+ :NumericTransform,
39
+ :Obfuscate,
40
+ :PartitionedMultiFilter,
41
+ :PKIDiscretize,
42
+ :PotentialClassIgnorer,
43
+ :PrincipalComponents,
44
+ :RandomProjection,
45
+ :RandomSubset,
46
+ :Remove,
47
+ :RemoveByName,
48
+ :RemoveType,
49
+ :RemoveUseless,
50
+ :RenameAttribute,
51
+ :RenameNominalValues,
52
+ :Reorder,
53
+ :ReplaceMissingValues,
54
+ :ReplaceMissingWithUserConstant,
55
+ :ReplaceWithMissingValue,
56
+ :SortLabels,
57
+ :Standardize,
58
+ :StringToNominal,
59
+ :StringToWordVector,
60
+ :SwapValues,
61
+ :TimeSeriesDelta,
62
+ :TimeSeriesTranslate,
63
+ :Transpose
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,25 @@
1
+ require 'weka/class_builder'
2
+
3
+ module Weka
4
+ module Filters
5
+ module Unsupervised
6
+ module Instance
7
+ include ClassBuilder
8
+
9
+ build_classes :NonSparseToSparse,
10
+ :Randomize,
11
+ :RemoveDuplicates,
12
+ :RemoveFolds,
13
+ :RemoveFrequentValues,
14
+ :RemoveMisclassified,
15
+ :RemovePercentage,
16
+ :RemoveRange,
17
+ :RemoveWithValues,
18
+ :Resample,
19
+ :ReservoirSample,
20
+ :SparseToNonSparse,
21
+ :SubsetByExpression
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ require 'active_support/concern'
2
+
3
+ module Weka
4
+ module Filters
5
+ module Utils
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ def filter(instances)
10
+ set_input_format(instances)
11
+ Filter.use_filter(instances, self)
12
+ end
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ require 'active_support/concern'
2
+
3
+ module Weka
4
+ module Jars
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ require 'lock_jar'
9
+
10
+ lib_path = File.expand_path('../../', File.dirname(__FILE__))
11
+ lockfile = File.join(lib_path, 'Jarfile.lock')
12
+ jars_dir = File.join(lib_path, 'jars')
13
+
14
+ LockJar.install(lockfile, local_repo: jars_dir)
15
+ LockJar.load(lockfile, local_repo: jars_dir)
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ module Weka
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'weka/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'weka'
8
+ spec.version = Weka::VERSION
9
+ spec.authors = ['Paul Götze']
10
+ spec.email = ['paul.christoph.goetze@gmail.com']
11
+
12
+ spec.summary = %q{Machine Learning & Data Mining with JRuby.}
13
+ spec.description = %q{A wrapper for the Weka library (http://www.cs.waikato.ac.nz/ml/weka/)}
14
+ spec.homepage = 'https://github.com/paulgoetze/weka-jruby'
15
+ spec.license = 'MIT'
16
+
17
+ spec.platform = 'java'
18
+ spec.required_ruby_version = '~> 2.0'
19
+
20
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ spec.bindir = 'bin'
22
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
23
+ spec.require_paths = ['lib']
24
+
25
+ spec.add_runtime_dependency 'lock_jar', '~> 0.13'
26
+ spec.add_runtime_dependency 'activesupport', '~> 4.0'
27
+
28
+ spec.add_development_dependency 'bundler', '~> 1.6'
29
+ spec.add_development_dependency 'rake', '~> 10.0'
30
+ spec.add_development_dependency 'rspec', '~> 3.0'
31
+ spec.add_development_dependency 'shoulda-matchers', '~> 3.0'
32
+ end
metadata ADDED
@@ -0,0 +1,183 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: weka
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: java
6
+ authors:
7
+ - Paul Götze
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lock_jar
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.13'
20
+ requirement: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - "~>"
23
+ - !ruby/object:Gem::Version
24
+ version: '0.13'
25
+ prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: '4.0'
39
+ prerelease: false
40
+ type: :runtime
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.6'
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.6'
53
+ prerelease: false
54
+ type: :development
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '10.0'
67
+ prerelease: false
68
+ type: :development
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '3.0'
81
+ prerelease: false
82
+ type: :development
83
+ - !ruby/object:Gem::Dependency
84
+ name: shoulda-matchers
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.0'
95
+ prerelease: false
96
+ type: :development
97
+ description: A wrapper for the Weka library (http://www.cs.waikato.ac.nz/ml/weka/)
98
+ email:
99
+ - paul.christoph.goetze@gmail.com
100
+ executables:
101
+ - console
102
+ - setup
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - ".travis.yml"
109
+ - CODE_OF_CONDUCT.md
110
+ - Gemfile
111
+ - Jarfile
112
+ - Jarfile.lock
113
+ - MIT-LICENSE.txt
114
+ - README.md
115
+ - Rakefile
116
+ - bin/console
117
+ - bin/setup
118
+ - lib/weka.rb
119
+ - lib/weka/attribute_selection.rb
120
+ - lib/weka/attribute_selection/attribute_selection.rb
121
+ - lib/weka/attribute_selection/evaluator.rb
122
+ - lib/weka/attribute_selection/search.rb
123
+ - lib/weka/class_builder.rb
124
+ - lib/weka/classifiers.rb
125
+ - lib/weka/classifiers/bayes.rb
126
+ - lib/weka/classifiers/evaluation.rb
127
+ - lib/weka/classifiers/functions.rb
128
+ - lib/weka/classifiers/lazy.rb
129
+ - lib/weka/classifiers/meta.rb
130
+ - lib/weka/classifiers/rules.rb
131
+ - lib/weka/classifiers/trees.rb
132
+ - lib/weka/classifiers/utils.rb
133
+ - lib/weka/clusterers.rb
134
+ - lib/weka/clusterers/cluster_evaluation.rb
135
+ - lib/weka/clusterers/utils.rb
136
+ - lib/weka/concerns.rb
137
+ - lib/weka/concerns/buildable.rb
138
+ - lib/weka/concerns/describable.rb
139
+ - lib/weka/concerns/optionizable.rb
140
+ - lib/weka/concerns/persistent.rb
141
+ - lib/weka/core.rb
142
+ - lib/weka/core/attribute.rb
143
+ - lib/weka/core/converters.rb
144
+ - lib/weka/core/dense_instance.rb
145
+ - lib/weka/core/instances.rb
146
+ - lib/weka/core/loader.rb
147
+ - lib/weka/core/saver.rb
148
+ - lib/weka/exceptions.rb
149
+ - lib/weka/filters.rb
150
+ - lib/weka/filters/filter.rb
151
+ - lib/weka/filters/supervised/attribute.rb
152
+ - lib/weka/filters/supervised/instance.rb
153
+ - lib/weka/filters/unsupervised/attribute.rb
154
+ - lib/weka/filters/unsupervised/instance.rb
155
+ - lib/weka/filters/utils.rb
156
+ - lib/weka/jars.rb
157
+ - lib/weka/version.rb
158
+ - weka.gemspec
159
+ homepage: https://github.com/paulgoetze/weka-jruby
160
+ licenses:
161
+ - MIT
162
+ metadata: {}
163
+ post_install_message:
164
+ rdoc_options: []
165
+ require_paths:
166
+ - lib
167
+ required_ruby_version: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '2.0'
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ requirements: []
178
+ rubyforge_project:
179
+ rubygems_version: 2.4.8
180
+ signing_key:
181
+ specification_version: 4
182
+ summary: Machine Learning & Data Mining with JRuby.
183
+ test_files: []