liblinear-ruby 0.0.7 → 1.0.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 +69 -115
- data/lib/liblinear/array/double.rb +26 -0
- data/lib/liblinear/array/integer.rb +26 -0
- data/lib/liblinear/array.rb +15 -0
- data/lib/liblinear/error.rb +1 -1
- data/lib/liblinear/example.rb +29 -0
- data/lib/liblinear/feature_node.rb +40 -0
- data/lib/liblinear/feature_node_matrix.rb +23 -0
- data/lib/liblinear/model.rb +48 -83
- data/lib/liblinear/parameter.rb +72 -31
- data/lib/liblinear/problem.rb +40 -35
- data/lib/liblinear/version.rb +2 -2
- data/lib/liblinear.rb +98 -93
- data/spec/liblinear/array/double_spec.rb +21 -0
- data/spec/liblinear/example_spec.rb +17 -0
- data/spec/liblinear/feature_node_matrix_spec.rb +14 -0
- data/spec/liblinear/feature_node_spec.rb +14 -0
- data/spec/liblinear/model_spec.rb +23 -66
- data/spec/liblinear/parameter_spec.rb +46 -36
- data/spec/liblinear/problem_spec.rb +30 -8
- data/spec/liblinear_spec.rb +36 -76
- metadata +16 -3
- data/lib/liblinear/cross_validator.rb +0 -58
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liblinear-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kei Tsuchiya
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -65,8 +65,13 @@ files:
|
|
65
65
|
- ext/tron.cpp
|
66
66
|
- ext/tron.h
|
67
67
|
- lib/liblinear.rb
|
68
|
-
- lib/liblinear/
|
68
|
+
- lib/liblinear/array.rb
|
69
|
+
- lib/liblinear/array/double.rb
|
70
|
+
- lib/liblinear/array/integer.rb
|
69
71
|
- lib/liblinear/error.rb
|
72
|
+
- lib/liblinear/example.rb
|
73
|
+
- lib/liblinear/feature_node.rb
|
74
|
+
- lib/liblinear/feature_node_matrix.rb
|
70
75
|
- lib/liblinear/model.rb
|
71
76
|
- lib/liblinear/parameter.rb
|
72
77
|
- lib/liblinear/problem.rb
|
@@ -111,7 +116,11 @@ files:
|
|
111
116
|
- liblinear-2.1/windows/train.exe
|
112
117
|
- liblinear-2.1/windows/train.mexw64
|
113
118
|
- liblinear-ruby.gemspec
|
119
|
+
- spec/liblinear/array/double_spec.rb
|
114
120
|
- spec/liblinear/cross_validator_spec.rb
|
121
|
+
- spec/liblinear/example_spec.rb
|
122
|
+
- spec/liblinear/feature_node_matrix_spec.rb
|
123
|
+
- spec/liblinear/feature_node_spec.rb
|
115
124
|
- spec/liblinear/model_spec.rb
|
116
125
|
- spec/liblinear/parameter_spec.rb
|
117
126
|
- spec/liblinear/problem_spec.rb
|
@@ -141,7 +150,11 @@ signing_key:
|
|
141
150
|
specification_version: 4
|
142
151
|
summary: Ruby wrapper of LIBLINEAR using SWIG
|
143
152
|
test_files:
|
153
|
+
- spec/liblinear/array/double_spec.rb
|
144
154
|
- spec/liblinear/cross_validator_spec.rb
|
155
|
+
- spec/liblinear/example_spec.rb
|
156
|
+
- spec/liblinear/feature_node_matrix_spec.rb
|
157
|
+
- spec/liblinear/feature_node_spec.rb
|
145
158
|
- spec/liblinear/model_spec.rb
|
146
159
|
- spec/liblinear/parameter_spec.rb
|
147
160
|
- spec/liblinear/problem_spec.rb
|
@@ -1,58 +0,0 @@
|
|
1
|
-
module Liblinear
|
2
|
-
class CrossValidator
|
3
|
-
include Liblinear
|
4
|
-
include Liblinearswig
|
5
|
-
|
6
|
-
# @param prob [LibLinear::Problem]
|
7
|
-
# @param param [Liblinear::Parameter]
|
8
|
-
# @param fold [Integer]
|
9
|
-
def initialize(prob, param, fold)
|
10
|
-
@prob = prob
|
11
|
-
@param = param
|
12
|
-
@fold = fold
|
13
|
-
end
|
14
|
-
|
15
|
-
# @return [Array <Integer, Double>]
|
16
|
-
def execute
|
17
|
-
target = new_double_array(@prob.labels.size.times.map { 0.0 })
|
18
|
-
cross_validation(@prob.prob, @param.param, @fold, target)
|
19
|
-
@predictions = double_array_c_to_ruby(target, @prob.labels.size)
|
20
|
-
end
|
21
|
-
|
22
|
-
# @return [Double]
|
23
|
-
def accuracy
|
24
|
-
total_correct = 0
|
25
|
-
@prob.labels.size.times do |i|
|
26
|
-
total_correct += 1 if @predictions[i] == @prob.labels[i].to_f
|
27
|
-
end
|
28
|
-
total_correct.to_f / @prob.labels.size.to_f
|
29
|
-
end
|
30
|
-
|
31
|
-
# @return [Double]
|
32
|
-
def mean_squared_error
|
33
|
-
total_error = 0.0
|
34
|
-
@prob.labels.size.times do |i|
|
35
|
-
total_error += (@prob.labels[i].to_f - @predictions[i].to_f) ** 2
|
36
|
-
end
|
37
|
-
total_error / @prob.labels.size.to_f
|
38
|
-
end
|
39
|
-
|
40
|
-
# @return [Double]
|
41
|
-
def squared_correlation_coefficient
|
42
|
-
sum_x = 0.0
|
43
|
-
sum_y = 0.0
|
44
|
-
sum_xx = 0.0
|
45
|
-
sum_yy = 0.0
|
46
|
-
sum_xy = 0.0
|
47
|
-
@prob.labels.size.times do |i|
|
48
|
-
sum_x += @predictions[i].to_f
|
49
|
-
sum_y += @prob.labels[i].to_f
|
50
|
-
sum_xx += @predictions[i].to_f ** 2
|
51
|
-
sum_yy += @prob.labels[i].to_f ** 2
|
52
|
-
sum_xy += @predictions[i].to_f * @prob.labels[i].to_f
|
53
|
-
end
|
54
|
-
((@prob.labels.size * sum_xy - sum_x * sum_y) ** 2) /
|
55
|
-
((@prob.labels.size * sum_xx - sum_x ** 2) * (@prob.labels.size * sum_yy - sum_y ** 2))
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|