eps 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +1 -1
- data/lib/eps/base_estimator.rb +6 -1
- data/lib/eps/evaluators/lightgbm.rb +2 -2
- data/lib/eps/evaluators/linear_regression.rb +3 -2
- data/lib/eps/evaluators/naive_bayes.rb +2 -1
- data/lib/eps/pmml/generator.rb +4 -4
- data/lib/eps/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8133bd3887423fb41421aa2a4270aa0c7fc75b741ea60a6c55fb97308f3ddea4
|
4
|
+
data.tar.gz: '018283d9934459202f8395b4c3f4ba201894296e3cfa185bb884cc5b73981f0a'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e1439f4a9a268a0434dc926a68822731db9267c746d4c76fa43a8debdbc49c25a502ff2051254fbf3453edb33141d35c02fa067afcddf2761e92b96e9d85751
|
7
|
+
data.tar.gz: 0c87d327d5f8083349cc75ea6b6e725e15ad20ac2535dc37dbc6b7955e6eca4408db93140287e8a9bfa7cee9da11956eb018600851bb07072c9e4347978d89dc
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -357,7 +357,7 @@ Eps supports:
|
|
357
357
|
|
358
358
|
#### Performance
|
359
359
|
|
360
|
-
To speed up training on large datasets with linear regression, [install GSL](https://
|
360
|
+
To speed up training on large datasets with linear regression, [install GSL](https://github.com/ankane/gslr#gsl-installation). With Homebrew, you can use:
|
361
361
|
|
362
362
|
```sh
|
363
363
|
brew install gsl
|
data/lib/eps/base_estimator.rb
CHANGED
@@ -4,6 +4,7 @@ module Eps
|
|
4
4
|
@options = options.dup
|
5
5
|
# TODO better pattern - don't pass most options to train
|
6
6
|
options.delete(:intercept)
|
7
|
+
@trained = false
|
7
8
|
train(data, y, **options) if data
|
8
9
|
end
|
9
10
|
|
@@ -48,6 +49,8 @@ module Eps
|
|
48
49
|
end
|
49
50
|
|
50
51
|
def summary(extended: false)
|
52
|
+
raise "Summary not available for loaded models" unless @trained
|
53
|
+
|
51
54
|
str = String.new("")
|
52
55
|
|
53
56
|
if @validation_set
|
@@ -169,6 +172,8 @@ module Eps
|
|
169
172
|
# reset pmml
|
170
173
|
@pmml = nil
|
171
174
|
|
175
|
+
@trained = true
|
176
|
+
|
172
177
|
nil
|
173
178
|
end
|
174
179
|
|
@@ -205,7 +210,7 @@ module Eps
|
|
205
210
|
|
206
211
|
# TODO determine max features automatically
|
207
212
|
# start based on number of rows
|
208
|
-
encoder = Eps::TextEncoder.new(v)
|
213
|
+
encoder = Eps::TextEncoder.new(**v)
|
209
214
|
counts = encoder.fit(train_set.columns.delete(k))
|
210
215
|
encoder.vocabulary.each do |word|
|
211
216
|
train_set.columns[[k, word]] = [0] * counts.size
|
@@ -16,7 +16,7 @@ module Eps
|
|
16
16
|
|
17
17
|
# sparse matrix
|
18
18
|
@text_features.each do |k, v|
|
19
|
-
encoder = TextEncoder.new(v)
|
19
|
+
encoder = TextEncoder.new(**v)
|
20
20
|
|
21
21
|
values = data.columns.delete(k)
|
22
22
|
counts = encoder.transform(values)
|
@@ -81,7 +81,7 @@ module Eps
|
|
81
81
|
else
|
82
82
|
case node.operator
|
83
83
|
when "equal"
|
84
|
-
v == node.value
|
84
|
+
v.to_s == node.value
|
85
85
|
when "in"
|
86
86
|
node.value.include?(v)
|
87
87
|
when "greaterThan"
|
@@ -19,10 +19,11 @@ module Eps
|
|
19
19
|
case type
|
20
20
|
when "categorical"
|
21
21
|
x.columns[k].each_with_index do |xv, i|
|
22
|
-
|
22
|
+
# TODO clean up
|
23
|
+
scores[i] += (@coefficients[[k, xv]] || @coefficients[[k, xv.to_s]]).to_f
|
23
24
|
end
|
24
25
|
when "text"
|
25
|
-
encoder = TextEncoder.new(
|
26
|
+
encoder = TextEncoder.new(**@text_features[k])
|
26
27
|
counts = encoder.transform(x.columns[k])
|
27
28
|
coef = {}
|
28
29
|
@coefficients.each do |k2, v|
|
@@ -38,7 +38,8 @@ module Eps
|
|
38
38
|
case type
|
39
39
|
when "categorical"
|
40
40
|
x.columns[k].each_with_index do |xi, i|
|
41
|
-
|
41
|
+
# TODO clean this up
|
42
|
+
vc = probabilities[:conditional][k][xi] || probabilities[:conditional][k][xi.to_s]
|
42
43
|
|
43
44
|
# unknown value if not vc
|
44
45
|
if vc
|
data/lib/eps/pmml/generator.rb
CHANGED
@@ -210,10 +210,10 @@ module Eps
|
|
210
210
|
probabilities[:conditional].each do |k, v|
|
211
211
|
xml.BayesInput(fieldName: k) do
|
212
212
|
if features[k] == "categorical"
|
213
|
-
v.sort_by { |k2, _| k2 }.each do |k2, v2|
|
213
|
+
v.sort_by { |k2, _| k2.to_s }.each do |k2, v2|
|
214
214
|
xml.PairCounts(value: k2) do
|
215
215
|
xml.TargetValueCounts do
|
216
|
-
v2.sort_by { |k2, _| k2 }.each do |k3, v3|
|
216
|
+
v2.sort_by { |k2, _| k2.to_s }.each do |k3, v3|
|
217
217
|
xml.TargetValueCount(value: k3, count: v3)
|
218
218
|
end
|
219
219
|
end
|
@@ -221,7 +221,7 @@ module Eps
|
|
221
221
|
end
|
222
222
|
else
|
223
223
|
xml.TargetValueStats do
|
224
|
-
v.sort_by { |k2, _| k2 }.each do |k2, v2|
|
224
|
+
v.sort_by { |k2, _| k2.to_s }.each do |k2, v2|
|
225
225
|
xml.TargetValueStat(value: k2) do
|
226
226
|
xml.GaussianDistribution(mean: v2[:mean], variance: v2[:stdev]**2)
|
227
227
|
end
|
@@ -233,7 +233,7 @@ module Eps
|
|
233
233
|
end
|
234
234
|
xml.BayesOutput(fieldName: "target") do
|
235
235
|
xml.TargetValueCounts do
|
236
|
-
probabilities[:prior].sort_by { |k, _| k }.each do |k, v|
|
236
|
+
probabilities[:prior].sort_by { |k, _| k.to_s }.each do |k, v|
|
237
237
|
xml.TargetValueCount(value: k, count: v)
|
238
238
|
end
|
239
239
|
end
|
data/lib/eps/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lightgbm
|
@@ -143,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
|
-
rubygems_version: 3.
|
146
|
+
rubygems_version: 3.1.2
|
147
147
|
signing_key:
|
148
148
|
specification_version: 4
|
149
149
|
summary: Machine learning for Ruby. Supports regression (linear regression) and classification
|