data_modeler 0.1.1 → 0.2.0
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.
- checksums.yaml +4 -4
- data/README.md +6 -1
- data/data_modeler.gemspec +6 -1
- data/lib/data_modeler/{dataset.rb → dataset/dataset.rb} +0 -0
- data/lib/data_modeler/{dataset_gen.rb → dataset/dataset_gen.rb} +0 -0
- data/lib/data_modeler/{dataset_helper.rb → dataset/dataset_helper.rb} +0 -0
- data/lib/data_modeler/model/fann.rb +52 -0
- data/lib/data_modeler/version.rb +1 -1
- data/lib/data_modeler.rb +9 -3
- metadata +36 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7be4c7a2b2fcc56f06898a1fa67fc3494d8560c5
|
4
|
+
data.tar.gz: 27c3a704d5827dc86cac1f27652b178732fa8451
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7a0847efa67279ca0aeb8ce808ed8cc4aef8c89e430fb857fd766524e66615a06548907a578982c8cc4f2fdab4ac1764d7af9674ca7667ff7945b81eb7fcc50
|
7
|
+
data.tar.gz: 2c5701cb6d89e66258baf0ef8883cb63a02a1c21dccc2cc810d737f9802ef3b725980e02a6982f057e4bad9805fe00ac1dbc73db97222ad152dd5eb550a59e6c
|
data/README.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
# [Data Modeler](https://github.com/giuse/data_modeler)
|
3
|
+
|
4
|
+
[](https://badge.fury.io/rb/data_modeler)
|
5
|
+
[](https://travis-ci.org/giuse/data_modeler)
|
6
|
+
[](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.
|
37
|
+
spec.add_development_dependency 'rspec', '~> 3.6'
|
38
|
+
spec.add_development_dependency 'rspec-retry', '~> 0.5.4'
|
34
39
|
end
|
File without changes
|
File without changes
|
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
|
data/lib/data_modeler/version.rb
CHANGED
data/lib/data_modeler.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
require "data_modeler/version"
|
2
2
|
require "data_modeler/exceptions"
|
3
|
-
|
4
|
-
|
5
|
-
require "data_modeler/
|
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.
|
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-
|
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.
|
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:
|
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:
|