weka 0.5.0-java → 0.6.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 07d0cbed2d245de34e10101d0597017194804735e3b5ea6bc972201282c60d5d
4
- data.tar.gz: b304c03a4552b766f56e60e52b765068fdb0de0350d1e5c541882f085e90824b
2
+ SHA1:
3
+ metadata.gz: 17c3a647cf8e23d2c81a4f456c7e3e576a8e768c
4
+ data.tar.gz: 90419f5ac130f3a1e44c860947b68ed8fd7e1fc3
5
5
  SHA512:
6
- metadata.gz: 942621fa83a7670384adccb717610ac19dc5d961fd9de5ab579a331c40119ef8e0e73cb0b0962aaff9fe937628335ee453be2ef1ed0669edf5421dadc075acdc
7
- data.tar.gz: ee68c277c9a40f6349fdea303897d44fd93ded9311d11ffba8c1cd3909764ea51d22638cc7240bb375570615a9acaa4d98ba591b8de3102c41c3dcabf550283b
6
+ metadata.gz: 0e940c23d7234b6a3dad46e9625040912122d046916bb1db31f1c57abc0eacd14b2ee08178010340a12e55a3fe99039f348ea944067ec1b1c6996e0adb4954fd
7
+ data.tar.gz: ad512593515521dbe0dc5627628df1ccfa2e8a9279acf1359a75f2321911c65bfe2e5ef32527ffa872743514e48554e73fbf88744e8989f6ae93449c40266df1
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  jars
11
+ /lib/*_jars.rb
@@ -5,6 +5,7 @@ AllCops:
5
5
  - '*.gemspec'
6
6
  - 'Gemfile'
7
7
  - 'Gemfile.lock'
8
+ - 'lib/weka_jars.rb'
8
9
 
9
10
  Style/Copyright:
10
11
  Enabled: false
@@ -2,14 +2,6 @@ sudo: false
2
2
  language: ruby
3
3
 
4
4
  rvm:
5
- - jruby-9000
6
-
7
- cache:
8
- - bundler
9
-
10
- before_install:
11
- - rvm get head
12
- - rvm use jruby-9.0.1.0 --install
13
- - gem install bundler
14
-
15
- script: bundle exec rake spec
5
+ - jruby-9.0.0.0
6
+ - jruby-9.1.0.0
7
+ - jruby-head
@@ -0,0 +1,68 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
6
+ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.6.0] – 2017-12-17
11
+ ### Added
12
+ - #copy method for Weka::Core::Instances
13
+
14
+ ### Changed
15
+ - Load Jars with jar-dependencies instead of lock_jar gem
16
+ - Make Weka::Core::Instances#instance_from public
17
+
18
+ ### Fixed
19
+ - Weka::UnassignedTrainingInstancesError when running #classify/#cluster and
20
+ #distribution_for on deserialized classfiers and clusterers
21
+
22
+
23
+ ## [0.5.0] – 2017-06-17
24
+ ### Added
25
+ - #to_m (to Matrix) method for Weka::Core::Instances
26
+ - Curve classes in Weka::Classifiers::Evaluation module
27
+ - Allow including additional modules on class building
28
+ - Rubocop config for project
29
+
30
+ ### Changed
31
+ - Allow passing a hash to Weka::Core::Instances#add_instance
32
+
33
+ ### Removed
34
+ - Block argument in Weka::Core::Instances#initialize
35
+
36
+
37
+ ## [0.4.0] – 2016-12-22
38
+ ### Added
39
+ - C45 converters
40
+ - Full support for string attributes
41
+
42
+ ### Removed
43
+ - ActiveSupport as dependency
44
+
45
+
46
+ ## [0.3.0] – 2016-02-10
47
+ ### Added
48
+ - Allow adding Instances with missing values
49
+ - Allow creating DenseInstances with missing values
50
+ - #merge method for Weka::Core:Instances
51
+
52
+
53
+ ## [0.2.0] – 2016-01-19
54
+ ### Added
55
+ - Serialization/deserialization functionality
56
+ - #apply_filters method for Weka::Core::Instances
57
+
58
+
59
+ ## [0.1.0] – 2015-12-26
60
+ Initial release
61
+
62
+ [Unreleased]: https://github.com/paulgoetze/weka-jruby/compare/v0.6.0...HEAD
63
+ [0.6.0]: https://github.com/paulgoetze/weka-jruby/compare/v0.5.0...v0.6.0
64
+ [0.5.0]: https://github.com/paulgoetze/weka-jruby/compare/v0.4.0...v0.5.0
65
+ [0.4.0]: https://github.com/paulgoetze/weka-jruby/compare/v0.3.0...v0.4.0
66
+ [0.3.0]: https://github.com/paulgoetze/weka-jruby/compare/v0.2.0...v0.3.0
67
+ [0.2.0]: https://github.com/paulgoetze/weka-jruby/compare/v0.1.0...v0.2.0
68
+ [0.1.0]: https://github.com/paulgoetze/weka-jruby/compare/ce6a985017c28ea755290a9baba4d81acddc2d20...v0.1.0
data/README.md CHANGED
@@ -39,8 +39,12 @@ detailed information about how to use weka with JRuby and some examplary code sn
39
39
 
40
40
  ## Development
41
41
 
42
- After checking out the repo, run `bin/setup` to install dependencies.
43
- To install this gem onto your local machine, run `bundle exec rake install`.
42
+ 1. Check out the repo with `git clone git@github.com:paulgoetze/weka-jruby.git`.
43
+ 2. Set a local environment variable `export JARS_VENDOR=false`.
44
+ This will prevent
45
+ compiling the jars into your repo’s /lib directory and will load them from your local maven repository instead.
46
+ See the [jar-dependencies README](https://github.com/mkristian/jar-dependencies#for-development-you-do-not-need-to-vendor-the-jars-at-all) for more information.
47
+ 3. Run `bin/setup` or `bundle install` to install the dependencies.
44
48
 
45
49
  Then, run `rake spec` to run the tests. You can also run `bin/console` or `rake irb` for an interactive prompt that will allow you to experiment.
46
50
 
data/Rakefile CHANGED
@@ -3,17 +3,7 @@ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task default: :prepare
7
- task install: :prepare
8
-
9
- desc 'Install weka jars & dependencies'
10
- task :prepare do
11
- require 'lock_jar'
12
- lib_path = File.expand_path('.', File.dirname(__FILE__))
13
- jars_dir = File.join(lib_path, 'jars')
14
-
15
- LockJar.install('Jarfile.lock', local_repo: jars_dir)
16
- end
6
+ task default: :spec
17
7
 
18
8
  desc 'Start an irb session with the gem loaded'
19
9
  task :irb do
@@ -1,11 +1,9 @@
1
1
  require 'java'
2
- require 'weka/jars'
3
2
  require 'weka/version'
4
3
  require 'weka/exceptions'
4
+ require Dir[File.join(File.dirname(__FILE__), '*_jars.rb')].first
5
5
 
6
6
  module Weka
7
- include Jars
8
-
9
7
  class << self
10
8
  def require_all(type)
11
9
  files = Dir[File.expand_path("../weka/#{type}/**/*.rb", __FILE__)]
@@ -103,7 +103,7 @@ module Weka
103
103
  end
104
104
 
105
105
  def constantize(module_names)
106
- Object.module_eval("::#{module_names}")
106
+ Object.module_eval("::#{module_names}", __FILE__, __LINE__)
107
107
  end
108
108
 
109
109
  def utils
@@ -1,4 +1,5 @@
1
1
  require 'weka/class_builder'
2
+ require 'weka/concerns'
2
3
 
3
4
  module Weka
4
5
  module Classifiers
@@ -6,6 +7,7 @@ module Weka
6
7
 
7
8
  class Evaluation
8
9
  include ClassBuilder
10
+ include Weka::Concerns::Persistent
9
11
 
10
12
  # Use both nomenclatures f_measure and fmeasure for consistency
11
13
  # due to jruby's auto method generation of 'fMeasure' to 'f_measure' and
@@ -19,7 +19,7 @@ module Weka
19
19
 
20
20
  error = 'Class attribute is not assigned for Instances.'
21
21
  hint = 'You can assign a class attribute with #class_attribute=.'
22
- message = "#{error} #{hint}"
22
+ message = "#{error}\n#{hint}"
23
23
 
24
24
  raise UnassignedClassError, message
25
25
  end
@@ -29,27 +29,49 @@ module Weka
29
29
 
30
30
  error = 'Classifier is not trained with Instances.'
31
31
  hint = 'You can set the training instances with #train_with_instances.'
32
- message = "#{error} #{hint}"
32
+ message = "#{error}\n#{hint}"
33
33
 
34
34
  raise UnassignedTrainingInstancesError, message
35
35
  end
36
+
37
+ def ensure_valid_instances_structure!(instances)
38
+ unless instances.is_a?(Weka::Core::Instances)
39
+ message = 'Instances has to be a Weka::Core::Instances object.'
40
+ raise ArgumentError, message
41
+ end
42
+
43
+ return if training_instances.nil?
44
+ return if instances.equal_headers(training_instances)
45
+
46
+ message = 'The passed instances need to have the same structure as ' \
47
+ 'the classifier’s training instances.'
48
+
49
+ raise InvalidInstancesStructureError, message
50
+ end
51
+
52
+ def ensure_instances_structure_available!
53
+ return unless instances_structure.nil?
54
+
55
+ error = 'Classifier does not have any instances structure info.'
56
+ hint = 'You probably tried to classify values with a ' \
57
+ 'classifier that is untrained or doesn’t have an ' \
58
+ 'instances_structure set. Please run ' \
59
+ '#train_with_instances, try serializing and ' \
60
+ 'deserializing your classifier again in case you used a ' \
61
+ 'deserialized classifier or set its instances_structure.'
62
+ message = "#{error}\n#{hint}"
63
+
64
+ raise MissingInstancesStructureError, message
65
+ end
36
66
  end
37
67
 
38
68
  module Transformers
39
69
  private
40
70
 
41
71
  def classifiable_instance_from(instance_or_values)
42
- attributes = training_instances.attributes
43
- instances = Weka::Core::Instances.new(attributes: attributes)
72
+ ensure_instances_structure_available!
44
73
 
45
- class_attribute = training_instances.class_attribute
46
- class_index = training_instances.class_index
47
- instances.insert_attribute_at(class_attribute, class_index)
48
-
49
- instances.class_index = training_instances.class_index
50
- instances.add_instance(instance_or_values)
51
-
52
- instance = instances.first
74
+ instance = instances_structure.instance_from(instance_or_values)
53
75
  instance.set_class_missing
54
76
  instance
55
77
  end
@@ -60,16 +82,24 @@ module Weka
60
82
  include Checks
61
83
 
62
84
  attr_reader :training_instances
85
+ attr_reader :instances_structure
63
86
 
64
87
  def train_with_instances(instances)
65
88
  ensure_class_attribute_assigned!(instances)
66
89
 
67
90
  @training_instances = instances
91
+ @instances_structure = instances.string_free_structure
92
+
68
93
  build_classifier(instances)
69
94
 
70
95
  self
71
96
  end
72
97
 
98
+ def instances_structure=(instances)
99
+ ensure_valid_instances_structure!(instances)
100
+ @instances_structure = instances.string_free_structure
101
+ end
102
+
73
103
  def cross_validate(folds: 3)
74
104
  ensure_trained_with_instances!
75
105
 
@@ -101,8 +131,6 @@ module Weka
101
131
  include Transformers
102
132
 
103
133
  def classify(instance_or_values)
104
- ensure_trained_with_instances!
105
-
106
134
  instance = classifiable_instance_from(instance_or_values)
107
135
  index = classify_instance(instance)
108
136
 
@@ -112,7 +140,7 @@ module Weka
112
140
  private
113
141
 
114
142
  def class_value_of_index(index)
115
- training_instances.class_attribute.value(index)
143
+ instances_structure.class_attribute.value(index)
116
144
  end
117
145
  end
118
146
 
@@ -136,8 +164,6 @@ module Weka
136
164
  include Transformers
137
165
 
138
166
  def distribution_for(instance_or_values)
139
- ensure_trained_with_instances!
140
-
141
167
  instance = classifiable_instance_from(instance_or_values)
142
168
  distributions = distribution_for_instance(instance)
143
169
 
@@ -147,7 +173,7 @@ module Weka
147
173
  private
148
174
 
149
175
  def class_distributions_from(distributions)
150
- class_values = training_instances.class_attribute.values
176
+ class_values = instances_structure.class_attribute.values
151
177
 
152
178
  distributions.each_with_object({}).with_index do |(distribution, result), index|
153
179
  class_value = class_values[index]
@@ -27,21 +27,39 @@ module Weka
27
27
 
28
28
  error = 'Clusterer is not trained with Instances.'
29
29
  hint = 'You can set the training instances with #train_with_instances.'
30
- message = "#{error} #{hint}"
30
+ message = "#{error}\n#{hint}"
31
31
 
32
32
  raise UnassignedTrainingInstancesError, message
33
33
  end
34
- end
35
34
 
36
- module Transformers
37
- private
35
+ def ensure_valid_instances_structure!(instances)
36
+ unless instances.is_a?(Weka::Core::Instances)
37
+ message = 'Instances has to be a Weka::Core::Instances object.'
38
+ raise ArgumentError, message
39
+ end
40
+
41
+ return if training_instances.nil?
42
+ return if instances.equal_headers(training_instances)
38
43
 
39
- def clusterable_instance_from(instance_or_values)
40
- attributes = training_instances.attributes
41
- instances = Weka::Core::Instances.new(attributes: attributes)
44
+ message = 'The passed instances need to have the same structure as ' \
45
+ 'the clusterers training instances.'
42
46
 
43
- instances.add_instance(instance_or_values)
44
- instances.first
47
+ raise InvalidInstancesStructureError, message
48
+ end
49
+
50
+ def ensure_instances_structure_available!
51
+ return unless instances_structure.nil?
52
+
53
+ error = 'Clusterer does not have any instances structure info.'
54
+ hint = 'You probably tried to cluster values with a clusterer ' \
55
+ 'that is untrained or doesn’t have an ' \
56
+ 'instances_structure set. Please run ' \
57
+ '#train_with_instances, try serializing and ' \
58
+ 'deserializing your clusterer again in case you used a ' \
59
+ 'deserialized clusterer or set its instances_structure.'
60
+ message = "#{error}\n#{hint}"
61
+
62
+ raise MissingInstancesStructureError, message
45
63
  end
46
64
  end
47
65
 
@@ -49,14 +67,22 @@ module Weka
49
67
  include Checks
50
68
 
51
69
  attr_reader :training_instances
70
+ attr_reader :instances_structure
52
71
 
53
72
  def train_with_instances(instances)
54
73
  @training_instances = instances
74
+ @instances_structure = instances.string_free_structure
75
+
55
76
  build_clusterer(instances)
56
77
 
57
78
  self
58
79
  end
59
80
 
81
+ def instances_structure=(instances)
82
+ ensure_valid_instances_structure!(instances)
83
+ @instances_structure = instances.string_free_structure
84
+ end
85
+
60
86
  def evaluate(test_instances)
61
87
  ensure_trained_with_instances!
62
88
 
@@ -85,12 +111,11 @@ module Weka
85
111
 
86
112
  module Clusterable
87
113
  include Checks
88
- include Transformers
89
114
 
90
115
  def cluster(instance_or_values)
91
- ensure_trained_with_instances!
116
+ ensure_instances_structure_available!
92
117
 
93
- instance = clusterable_instance_from(instance_or_values)
118
+ instance = instances_structure.instance_from(instance_or_values)
94
119
  cluster_instance(instance)
95
120
  end
96
121
  end
@@ -112,12 +137,11 @@ module Weka
112
137
 
113
138
  module Distributable
114
139
  include Checks
115
- include Transformers
116
140
 
117
141
  def distribution_for(instance_or_values)
118
- ensure_trained_with_instances!
142
+ ensure_instances_structure_available!
119
143
 
120
- instance = clusterable_instance_from(instance_or_values)
144
+ instance = instances_structure.instance_from(instance_or_values)
121
145
  distribution_for_instance(instance).to_a
122
146
  end
123
147
  end
@@ -47,6 +47,11 @@ module Weka
47
47
  super(relation_name.to_s, attribute_list, 0)
48
48
  end
49
49
 
50
+ def copy
51
+ constructor = Instances.java_class.declared_constructor(Instances)
52
+ constructor.new_instance(self).to_java(Instances)
53
+ end
54
+
50
55
  def instances
51
56
  enumerate_instances.to_a
52
57
  end
@@ -267,6 +272,33 @@ module Weka
267
272
  Matrix[*instances.map(&:values)]
268
273
  end
269
274
 
275
+ # Wrap the attribute values for the instance to be added with
276
+ # an Instance object, if needed. The Instance object is
277
+ # assigned with the given weight.
278
+ #
279
+ # @param [Instance, Array, Hash] instance_or_values either the
280
+ # instance object to be added or the attribute values for it.
281
+ # For the latter case, it accepts an array or a hash.
282
+ #
283
+ # @param [Float] weight the weight for the Instance to be added
284
+ #
285
+ # @return [Instance] the object that contains the given
286
+ # attribute values.
287
+ def instance_from(instance_or_values, weight: 1.0)
288
+ dataset = string_free_structure
289
+
290
+ if instance_or_values.is_a?(Java::WekaCore::Instance)
291
+ instance = instance_or_values
292
+ instance.weight = weight
293
+ else
294
+ data = instance_data(instance_or_values)
295
+ instance = DenseInstance.new(data, weight: weight)
296
+ end
297
+
298
+ dataset.add(instance)
299
+ dataset.first
300
+ end
301
+
270
302
  private
271
303
 
272
304
  def add_attribute(attribute)
@@ -291,42 +323,18 @@ module Weka
291
323
  end
292
324
  end
293
325
 
294
- # Wrap the attribute values for the instance to be added with
295
- # an Instance object, if needed. The Instance object is
296
- # assigned with the given weight.
297
- #
298
- # @param [Instance, Array, Hash] instance_or_values either the
299
- # instance object to be added or the attribute values for it.
300
- # For the latter case, it accepts an array or a hash.
301
- #
302
- # @param [Float] weight the weight for the Instance to be added
303
- #
304
- # @return [Instance] the object that contains the given
305
- # attribute values.
306
- def instance_from(instance_or_values, weight:)
307
- if instance_or_values.is_a?(Java::WekaCore::Instance)
308
- instance_or_values.weight = weight
309
- instance_or_values
310
- else
311
- if instance_or_values.is_a?(Hash)
312
- instance_or_values = attribute_values_from_hash(instance_or_values)
313
- end
314
-
315
- data = internal_values_of(instance_or_values)
316
-
317
- if has_string_attribute?
318
- data = check_string_attributes(data, instance_or_values)
319
- end
320
-
321
- DenseInstance.new(data, weight: weight)
322
- end
323
- end
324
-
325
326
  def map_attribute_type(type)
326
327
  return -1 unless Attribute::TYPES.include?(type.downcase.to_sym)
327
328
  Attribute.const_get(type.upcase)
328
329
  end
329
330
 
331
+ def instance_data(values)
332
+ values = attribute_values_from_hash(values) if values.is_a?(Hash)
333
+ data = internal_values_of(values)
334
+ data = check_string_attributes(data, values) if has_string_attribute?
335
+ data
336
+ end
337
+
330
338
  # Convert a hash whose keys are attribute names and values are attribute
331
339
  # values into an array containing attribute values in the order
332
340
  # of the Instances attributes.
@@ -3,9 +3,47 @@ module Weka
3
3
  java_import 'weka.core.SerializationHelper'
4
4
 
5
5
  class SerializationHelper
6
+ STRUCTURE_FILE_EXTENSION = 'structure'.freeze
7
+
6
8
  class << self
9
+ original_read = instance_method(:read)
10
+ original_write = instance_method(:write)
11
+
12
+ define_method(:read) do |filename|
13
+ object = original_read.bind(self).call(filename)
14
+
15
+ structure_filename = structure_file(filename)
16
+ structure_needed = object.respond_to?(:instances_structure)
17
+ structure_available = File.exist?(structure_filename)
18
+
19
+ if structure_needed && structure_available
20
+ structure = original_read.bind(self).call(structure_filename)
21
+ object.instances_structure = structure
22
+ end
23
+
24
+ object
25
+ end
26
+
27
+ define_method(:write) do |filename, object|
28
+ structure_needed = object.respond_to?(:instances_structure)
29
+
30
+ if structure_needed && object.instances_structure
31
+ structure_filename = structure_file(filename)
32
+ structure = object.instances_structure
33
+ original_write.bind(self).call(structure_filename, structure)
34
+ end
35
+
36
+ original_write.bind(self).call(filename, object)
37
+ end
38
+
7
39
  alias deserialize read
8
40
  alias serialize write
41
+
42
+ private
43
+
44
+ def structure_file(filename)
45
+ "#{filename}.#{STRUCTURE_FILE_EXTENSION}"
46
+ end
9
47
  end
10
48
  end
11
49
  end
@@ -3,4 +3,6 @@ module Weka
3
3
 
4
4
  class UnassignedClassError < Error; end
5
5
  class UnassignedTrainingInstancesError < Error; end
6
+ class MissingInstancesStructureError < Error; end
7
+ class InvalidInstancesStructureError < Error; end
6
8
  end
@@ -1,3 +1,3 @@
1
1
  module Weka
2
- VERSION = '0.5.0'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
@@ -23,10 +23,11 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.add_runtime_dependency 'lock_jar', '~> 0.13'
27
-
28
26
  spec.add_development_dependency 'bundler', '~> 1.6'
29
27
  spec.add_development_dependency 'rake', '~> 10.0'
30
28
  spec.add_development_dependency 'rspec', '~> 3.0'
31
29
  spec.add_development_dependency 'shoulda-matchers', '~> 3.0'
30
+
31
+ spec.add_runtime_dependency 'jar-dependencies', '~> 0.3.11'
32
+ spec.requirements << 'jar nz.ac.waikato.cms.weka, weka-dev, 3.7.13'
32
33
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: java
6
6
  authors:
7
7
  - Paul Götze
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-17 00:00:00.000000000 Z
11
+ date: 2017-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - "~>"
17
- - !ruby/object:Gem::Version
18
- version: '0.13'
19
- name: lock_jar
20
- prerelease: false
21
- type: :runtime
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.13'
27
13
  - !ruby/object:Gem::Dependency
28
14
  requirement: !ruby/object:Gem::Requirement
29
15
  requirements:
@@ -80,6 +66,20 @@ dependencies:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.3.11
75
+ name: jar-dependencies
76
+ prerelease: false
77
+ type: :runtime
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.3.11
83
83
  description: A JRuby wrapper for the Weka library (http://www.cs.waikato.ac.nz/ml/weka/)
84
84
  email:
85
85
  - paul.christoph.goetze@gmail.com
@@ -93,10 +93,9 @@ files:
93
93
  - ".rspec"
94
94
  - ".rubocop.yml"
95
95
  - ".travis.yml"
96
+ - CHANGELOG.md
96
97
  - CODE_OF_CONDUCT.md
97
98
  - Gemfile
98
- - Jarfile
99
- - Jarfile.lock
100
99
  - MIT-LICENSE.txt
101
100
  - README.md
102
101
  - Rakefile
@@ -142,7 +141,6 @@ files:
142
141
  - lib/weka/filters/unsupervised/attribute.rb
143
142
  - lib/weka/filters/unsupervised/instance.rb
144
143
  - lib/weka/filters/utils.rb
145
- - lib/weka/jars.rb
146
144
  - lib/weka/version.rb
147
145
  - weka.gemspec
148
146
  homepage: https://github.com/paulgoetze/weka-jruby
@@ -163,9 +161,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
161
  - - ">="
164
162
  - !ruby/object:Gem::Version
165
163
  version: '0'
166
- requirements: []
164
+ requirements:
165
+ - jar nz.ac.waikato.cms.weka, weka-dev, 3.7.13
167
166
  rubyforge_project:
168
- rubygems_version: 2.6.11
167
+ rubygems_version: 2.6.14
169
168
  signing_key:
170
169
  specification_version: 4
171
170
  summary: Machine Learning & Data Mining with JRuby.
data/Jarfile DELETED
@@ -1 +0,0 @@
1
- jar 'nz.ac.waikato.cms.weka:weka-dev:jar:3.7.13'
@@ -1,17 +0,0 @@
1
- ---
2
- version: 0.13.0
3
- groups:
4
- default:
5
- dependencies:
6
- - nz.ac.waikato.cms.weka.thirdparty:java-cup-11b-runtime:jar:2015.03.26
7
- - nz.ac.waikato.cms.weka.thirdparty:java-cup-11b:jar:2015.03.26
8
- - nz.ac.waikato.cms.weka:weka-dev:jar:3.7.13
9
- - org.pentaho.pentaho-commons:pentaho-package-manager:jar:1.0.11
10
- artifacts:
11
- - jar:nz.ac.waikato.cms.weka:weka-dev:jar:3.7.13:
12
- transitive:
13
- nz.ac.waikato.cms.weka.thirdparty:java-cup-11b:jar:2015.03.26: {}
14
- org.pentaho.pentaho-commons:pentaho-package-manager:jar:1.0.11: {}
15
- nz.ac.waikato.cms.weka.thirdparty:java-cup-11b-runtime:jar:2015.03.26: {}
16
- remote_repositories:
17
- - http://repo1.maven.org/maven2/
@@ -1,16 +0,0 @@
1
- module Weka
2
- module Jars
3
- def self.included(base)
4
- base.class_eval do
5
- require 'lock_jar'
6
-
7
- lib_path = File.expand_path('../../', File.dirname(__FILE__))
8
- lockfile = File.join(lib_path, 'Jarfile.lock')
9
- jars_dir = File.join(lib_path, 'jars')
10
-
11
- LockJar.install(lockfile, local_repo: jars_dir)
12
- LockJar.load(lockfile, local_repo: jars_dir)
13
- end
14
- end
15
- end
16
- end