data_modeler 0.2.0 → 0.2.1

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
2
  SHA1:
3
- metadata.gz: 7be4c7a2b2fcc56f06898a1fa67fc3494d8560c5
4
- data.tar.gz: 27c3a704d5827dc86cac1f27652b178732fa8451
3
+ metadata.gz: 023a9053513981d2058cd23f7b0a9154da588b6b
4
+ data.tar.gz: 5e7a9c83204a2da747aa273e1ced42b4d1fefe36
5
5
  SHA512:
6
- metadata.gz: e7a0847efa67279ca0aeb8ce808ed8cc4aef8c89e430fb857fd766524e66615a06548907a578982c8cc4f2fdab4ac1764d7af9674ca7667ff7945b81eb7fcc50
7
- data.tar.gz: 2c5701cb6d89e66258baf0ef8883cb63a02a1c21dccc2cc810d737f9802ef3b725980e02a6982f057e4bad9805fe00ac1dbc73db97222ad152dd5eb550a59e6c
6
+ metadata.gz: 70cbccdd7cd7c9a70142c853f2a68e2a9be28412b05c48d6cd0b0440b703d6f878cdb58b1b0902efab321b4064116968aab37288ae2618634e44fc689ce0c433
7
+ data.tar.gz: 5d6ddf4e31fe4ae1d18973bf6719378037e9899d51627fdfc607813d8fff7de362d30aff0b4cb97343e13078414fde6a4a52e806e21f96fd572a0dfef740552e
@@ -82,9 +82,11 @@ class DataModeler::Dataset
82
82
  include DataModeler::IteratingBasedOnNext # `#each` and `#to_a` based on `#next`
83
83
 
84
84
  # Overloaded comparison for easier testing
85
+ # @param other [Dataset] what needs comparing to
86
+ # @return [void]
85
87
  def == other
86
- self.class == other.class &&
87
- data.object_id == other.data.object_id &&
88
+ self.class == other.class && # terminate check here if wrong class
89
+ data.object_id == other.data.object_id && # both `data` point to same object
88
90
  (instance_variables - [:@data]).all? do |var|
89
91
  self.instance_variable_get(var) == other.instance_variable_get(var)
90
92
  end
@@ -94,6 +96,8 @@ class DataModeler::Dataset
94
96
 
95
97
  include DataModeler::ConvertingTimeAndIndices # `#time` and `#idx`
96
98
 
99
+ # Initializes input indices vector
100
+ # @return [Array<input_idx>]
97
101
  def init_inputs
98
102
  if target_idx < end_idx
99
103
  # build list of incremental time buffers
@@ -98,6 +98,7 @@ class DataModeler::DatasetGen
98
98
 
99
99
  # Check if there is enough data to build `min_nruns` train + test sets
100
100
  # @raise [NotEnoughDataError] if `not enough minerals` (cit.)
101
+ # @return [void]
101
102
  # @note remember the schema: need to check for `|win|train1|t1|t2|...|tn|`
102
103
  def validate_enough_data_for min_nruns
103
104
  min_data_size = min_eligible_trg + train_size + min_nruns * test_size
@@ -5,6 +5,10 @@ class DataModeler::Model::FANN
5
5
 
6
6
  attr_reader :opts, :fann, :algo, :actfn
7
7
 
8
+ # @param netstruct [Array<ninputs, Array<hidden_layers>, noutputs>] network
9
+ # structure
10
+ # @param algo [:incremental, :batch, :rprop, :quickprop] training algorithm
11
+ # @param actfn [:sigmoid, ...] activation function
8
12
  def initialize netstruct, algo: nil, actfn: nil
9
13
  ninputs, hidden_layers, noutputs = netstruct
10
14
  @opts = {
@@ -14,23 +18,25 @@ class DataModeler::Model::FANN
14
18
  }
15
19
  @algo = algo
16
20
  @actfn = actfn
21
+ reset
17
22
  end
18
23
 
24
+ # Resets / initializes the model
25
+ # @return [void]
19
26
  def reset
20
27
  @fann = RubyFann::Standard.new opts
21
-
22
- if algo
23
- fann.set_training_algorithm(algo)
24
- end
25
-
28
+ fann.set_training_algorithm(algo) if algo
26
29
  if actfn
27
30
  fann.set_activation_function_hidden(actfn)
28
31
  fann.set_activation_function_output(actfn)
29
32
  end
30
-
31
- return self # allows chaining for `model.reset.train`
33
+ nil
32
34
  end
33
35
 
36
+ # Trains the model for ngens on the trainset
37
+ # @param ngens [Integer] number of training generations
38
+ # @param trainset [Hash-like<input: Array, target: Array>] training set
39
+ # @return [void]
34
40
  def train ngens, trainset
35
41
  tset = RubyFann::TrainData.new(
36
42
  inputs: trainset[:input], desired_outputs: trainset[:target])
@@ -40,13 +46,19 @@ class DataModeler::Model::FANN
40
46
  fann.train_on_data(tset, ngens, 1000, 1e-10)
41
47
  end
42
48
 
49
+ # Tests the model on inputs.
50
+ # @param inputs [Array<Array<inputs>>] sequence of inputs for the model
51
+ # @return [Array<Array<outputs>>] outputs corresponding to each input
43
52
  def test inputs
44
53
  inputs.collect { |i| fann.run i }
45
54
  end
46
55
 
56
+ # Save the model
57
+ # @param filename [String/path] where to save the model
58
+ # @return [void]
47
59
  def save filename
48
60
  # can do filename check here...?
49
- # I'd rather have kind of a `to_s`, and do the saving in the modeler
61
+ # TODO: I'd like to have a kind of `to_s`, and do all the saving in the modeler...
50
62
  fann.save filename
51
63
  end
52
64
  end
@@ -1,5 +1,5 @@
1
1
  # Main gem module
2
2
  module DataModeler
3
3
  # Version number
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_modeler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giuseppe Cuccu