data_modeler 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/data_modeler.rb +3 -0
- data/lib/data_modeler/base.rb +6 -6
- data/lib/data_modeler/dataset/dataset.rb +7 -3
- data/lib/data_modeler/models/fann.rb +3 -3
- data/lib/data_modeler/support.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb390503600e0270198476fd58e28fbeb7875b53
|
4
|
+
data.tar.gz: 5c57a5bdb492a069f4bfc6ffbec65b513fb94e82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e951667d4207d4293ee9666ed786886528c496e272ea71e7ba7a885780ac5b84e2724f00d3beb97b5f143babe467c19881f3dd0014a4132816bc7e4188da734
|
7
|
+
data.tar.gz: d1b0bcc66cb30693d65370409d129a5102a9dfb6e65afca11be98efc125ba3b0c85df546feb01f2f5857445259cf441c9c7c60b150cda239ec6e5bc47c3a662e
|
data/lib/data_modeler.rb
CHANGED
data/lib/data_modeler/base.rb
CHANGED
@@ -42,9 +42,9 @@ class DataModeler::Base
|
|
42
42
|
end
|
43
43
|
model.reset
|
44
44
|
model.train train_set, report_interval: report_interval
|
45
|
-
test_input, observations = tset_gen.test(nrun).values
|
45
|
+
times, test_input, observations = tset_gen.test(nrun).values
|
46
46
|
predictions = model.test test_input
|
47
|
-
save_run nrun, model, [predictions, observations]
|
47
|
+
save_run nrun, model, [times, predictions, observations]
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -121,12 +121,12 @@ class DataModeler::Base
|
|
121
121
|
# @param predobs [Array<Array<pred, obs>>] list of prediction-observation pairs
|
122
122
|
# @return [void]
|
123
123
|
# @note side effect: saves model and predobs to file system
|
124
|
-
def save_run nrun, model,
|
124
|
+
def save_run nrun, model, tpredobs
|
125
125
|
run_id = format '%02d', nrun
|
126
126
|
model.save out_dir.join("model_#{run_id}.sav") if save_models?
|
127
|
-
CSV.open(out_dir.join("
|
128
|
-
csv << targets.collect { |t| ["p_#{t}", "o_#{t}"] }.transpose.flatten
|
129
|
-
|
127
|
+
CSV.open(out_dir.join("tpredobs_#{run_id}.csv"), 'wb') do |csv|
|
128
|
+
csv << (%w(time) + targets.collect { |t| ["p_#{t}", "o_#{t}"] }.transpose.flatten)
|
129
|
+
tpredobs.transpose.each { |tpo| csv << tpo.flatten }
|
130
130
|
end
|
131
131
|
end
|
132
132
|
end
|
@@ -38,8 +38,6 @@ class DataModeler::Dataset
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# TODO: make sure constructor requirements are unnecessary for static models
|
41
|
-
# TODO: check if enough data / minimum_target
|
42
|
-
# TODO: the check in `#init_target` should go in the `ds_gen`
|
43
41
|
|
44
42
|
# Builds inputs for the model
|
45
43
|
# @return [Array]
|
@@ -59,6 +57,12 @@ class DataModeler::Dataset
|
|
59
57
|
end
|
60
58
|
end
|
61
59
|
|
60
|
+
# Returns the time of the current target
|
61
|
+
# @return [type of `data[:time]`]
|
62
|
+
def trg_time
|
63
|
+
data[:time][target_idx]
|
64
|
+
end
|
65
|
+
|
62
66
|
### ITERATION
|
63
67
|
|
64
68
|
# Returns the next pair [inputs, targets]
|
@@ -66,7 +70,7 @@ class DataModeler::Dataset
|
|
66
70
|
# @raise [StopIteration] when the target index is past the dataset limits
|
67
71
|
def peek
|
68
72
|
raise StopIteration if target_idx >= end_idx
|
69
|
-
[inputs, targets]
|
73
|
+
[trg_time, inputs, targets]
|
70
74
|
end
|
71
75
|
|
72
76
|
# Returns the next pair [inputs, targets] and increments the target
|
@@ -54,7 +54,7 @@ class DataModeler::Models::FANN
|
|
54
54
|
report_interval: report_interval, desired_error: desired_error)
|
55
55
|
end
|
56
56
|
# TODO: optimize maybe?
|
57
|
-
inputs, targets = trainset.values
|
57
|
+
times, inputs, targets = trainset.values
|
58
58
|
tset = RubyFann::TrainData.new inputs: inputs, desired_outputs: targets
|
59
59
|
# fann.init_weights tset # test this weights initialization
|
60
60
|
|
@@ -73,7 +73,7 @@ class DataModeler::Models::FANN
|
|
73
73
|
# check to improve performance
|
74
74
|
fann.randomize_weights(*init_weights_range.map(&method(:Float)))
|
75
75
|
# test it on inputs
|
76
|
-
inputs, targets = trainset.values
|
76
|
+
times, inputs, targets = trainset.values
|
77
77
|
outputs = test(inputs)
|
78
78
|
# calculate RMSE
|
79
79
|
rmse_fn = -> (outs) do
|
@@ -99,7 +99,7 @@ class DataModeler::Models::FANN
|
|
99
99
|
# @param inputs [Array<Array<inputs>>] sequence of inputs for the model
|
100
100
|
# @return [Array<Array<outputs>>] outputs corresponding to each input
|
101
101
|
def test inputs
|
102
|
-
inputs.collect
|
102
|
+
inputs.collect &fann.method(:run)
|
103
103
|
end
|
104
104
|
|
105
105
|
# Saves the model
|
data/lib/data_modeler/support.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_modeler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
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-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ruby-fann
|