data_modeler 0.1.1 → 0.2.0

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: 3daf6a98719d10349658f22bda03ae9763dfe2fd
4
- data.tar.gz: e7ce8d15928b20dbfda50ea2fafc910bb4f43451
3
+ metadata.gz: 7be4c7a2b2fcc56f06898a1fa67fc3494d8560c5
4
+ data.tar.gz: 27c3a704d5827dc86cac1f27652b178732fa8451
5
5
  SHA512:
6
- metadata.gz: 8a8135391faa041a1ac876c77f06add9311a9c58b0a300d774b28cff0bb9a7ce6e27d11e7bdcf1f085e545f755b82580b38eecf0a898ee29027c376abc95c289
7
- data.tar.gz: dfaad0abc476b8cee5b357a319be2427b97fe6e69ca10cd7a304ac7993b65df936801ea4df78860478780c9946f42a57629515d40d102bdceaf01161e472fe50
6
+ metadata.gz: e7a0847efa67279ca0aeb8ce808ed8cc4aef8c89e430fb857fd766524e66615a06548907a578982c8cc4f2fdab4ac1764d7af9674ca7667ff7945b81eb7fcc50
7
+ data.tar.gz: 2c5701cb6d89e66258baf0ef8883cb63a02a1c21dccc2cc810d737f9802ef3b725980e02a6982f057e4bad9805fe00ac1dbc73db97222ad152dd5eb550a59e6c
data/README.md CHANGED
@@ -1,4 +1,9 @@
1
- # DataModeler
1
+
2
+ # [Data Modeler](https://github.com/giuse/data_modeler)
3
+
4
+ [![Gem Version](https://badge.fury.io/rb/data_modeler.svg)](https://badge.fury.io/rb/data_modeler)
5
+ [![Build Status](https://travis-ci.org/giuse/data_modeler.svg?branch=master)](https://travis-ci.org/giuse/data_modeler)
6
+ [![Code Climate](https://codeclimate.com/github/giuse/data_modeler/badges/gpa.svg)](https://codeclimate.com/github/giuse/data_modeler)
2
7
 
3
8
  Using machine learning, create generative models based on your data alone. Applications span from imputation to prediction.
4
9
 
data/data_modeler.gemspec CHANGED
@@ -21,6 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
+ # Models
25
+ # TODO: learn to keep them independent from the gem (plug-ins)
26
+ spec.add_dependency 'ruby-fann', '~>1.2.6'
27
+
24
28
  # Debug
25
29
  spec.add_development_dependency 'pry', '~> 0.10'
26
30
  spec.add_development_dependency 'pry-nav', '~> 0.2'
@@ -30,5 +34,6 @@ Gem::Specification.new do |spec|
30
34
  # Test
31
35
  spec.add_development_dependency 'bundler', '~> 1.14'
32
36
  spec.add_development_dependency 'rake', '~> 10.0'
33
- spec.add_development_dependency 'rspec', '~> 3.0'
37
+ spec.add_development_dependency 'rspec', '~> 3.6'
38
+ spec.add_development_dependency 'rspec-retry', '~> 0.5.4'
34
39
  end
File without changes
@@ -0,0 +1,52 @@
1
+ require 'ruby-fann'
2
+
3
+ # Model class based on Fast Artificial Neural Networks (FANN)
4
+ class DataModeler::Model::FANN
5
+
6
+ attr_reader :opts, :fann, :algo, :actfn
7
+
8
+ def initialize netstruct, algo: nil, actfn: nil
9
+ ninputs, hidden_layers, noutputs = netstruct
10
+ @opts = {
11
+ num_inputs: ninputs,
12
+ hidden_neurons: hidden_layers,
13
+ num_outputs: noutputs
14
+ }
15
+ @algo = algo
16
+ @actfn = actfn
17
+ end
18
+
19
+ def reset
20
+ @fann = RubyFann::Standard.new opts
21
+
22
+ if algo
23
+ fann.set_training_algorithm(algo)
24
+ end
25
+
26
+ if actfn
27
+ fann.set_activation_function_hidden(actfn)
28
+ fann.set_activation_function_output(actfn)
29
+ end
30
+
31
+ return self # allows chaining for `model.reset.train`
32
+ end
33
+
34
+ def train ngens, trainset
35
+ tset = RubyFann::TrainData.new(
36
+ inputs: trainset[:input], desired_outputs: trainset[:target])
37
+ # fann.init_weights tset # test this weights initialization
38
+
39
+ # params: train_data, max_epochs, reports_interval, desired_error
40
+ fann.train_on_data(tset, ngens, 1000, 1e-10)
41
+ end
42
+
43
+ def test inputs
44
+ inputs.collect { |i| fann.run i }
45
+ end
46
+
47
+ def save filename
48
+ # can do filename check here...?
49
+ # I'd rather have kind of a `to_s`, and do the saving in the modeler
50
+ fann.save filename
51
+ end
52
+ end
@@ -1,5 +1,5 @@
1
1
  # Main gem module
2
2
  module DataModeler
3
3
  # Version number
4
- VERSION = "0.1.1"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/data_modeler.rb CHANGED
@@ -1,5 +1,11 @@
1
1
  require "data_modeler/version"
2
2
  require "data_modeler/exceptions"
3
- require "data_modeler/dataset_helper"
4
- require "data_modeler/dataset"
5
- require "data_modeler/dataset_gen"
3
+
4
+ # Dataset
5
+ require "data_modeler/dataset/dataset_helper"
6
+ require "data_modeler/dataset/dataset"
7
+ require "data_modeler/dataset/dataset_gen"
8
+
9
+ # Models (should be added to this module)
10
+ module DataModeler::Model; end
11
+ require "data_modeler/model/fann"
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_modeler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giuseppe Cuccu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-12 00:00:00.000000000 Z
11
+ date: 2017-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ruby-fann
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.2.6
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.2.6
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: pry
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +114,28 @@ dependencies:
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '3.0'
117
+ version: '3.6'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.6'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec-retry
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.5.4
104
132
  type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
- version: '3.0'
138
+ version: 0.5.4
111
139
  description: Using machine learning, create generative models based on your data alone.
112
140
  Applications span from imputation to prediction. This build specifically leverages
113
141
  time series. Further work on data preparation will be released as a separate project.
@@ -128,10 +156,11 @@ files:
128
156
  - bin/setup
129
157
  - data_modeler.gemspec
130
158
  - lib/data_modeler.rb
131
- - lib/data_modeler/dataset.rb
132
- - lib/data_modeler/dataset_gen.rb
133
- - lib/data_modeler/dataset_helper.rb
159
+ - lib/data_modeler/dataset/dataset.rb
160
+ - lib/data_modeler/dataset/dataset_gen.rb
161
+ - lib/data_modeler/dataset/dataset_helper.rb
134
162
  - lib/data_modeler/exceptions.rb
163
+ - lib/data_modeler/model/fann.rb
135
164
  - lib/data_modeler/version.rb
136
165
  homepage: https://github.com/giuse/data_modeler
137
166
  licenses: