liblinear-ruby 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/blasp.h +8 -0
- data/ext/daxpy.c +8 -0
- data/ext/ddot.c +8 -0
- data/ext/dnrm2.c +8 -0
- data/ext/dscal.c +8 -0
- data/ext/liblinear_wrap.cxx +128 -3
- data/ext/linear.cpp +344 -175
- data/ext/linear.h +2 -0
- data/ext/tron.cpp +14 -8
- data/ext/tron.h +2 -1
- data/lib/liblinear/version.rb +1 -1
- data/{liblinear-1.95 → liblinear-2.1}/COPYRIGHT +1 -1
- data/{liblinear-1.95 → liblinear-2.1}/Makefile +1 -1
- data/{liblinear-1.95 → liblinear-2.1}/Makefile.win +3 -9
- data/{liblinear-1.95 → liblinear-2.1}/README +45 -7
- data/{liblinear-1.95 → liblinear-2.1}/blas/Makefile +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/blas/blas.h +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/blas/blasp.h +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/blas/daxpy.c +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/blas/ddot.c +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/blas/dnrm2.c +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/blas/dscal.c +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/heart_scale +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/linear.cpp +344 -175
- data/{liblinear-1.95 → liblinear-2.1}/linear.def +1 -0
- data/{liblinear-1.95 → liblinear-2.1}/linear.h +2 -0
- data/{liblinear-1.95 → liblinear-2.1}/matlab/Makefile +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/matlab/README +12 -2
- data/{liblinear-1.95 → liblinear-2.1}/matlab/libsvmread.c +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/matlab/libsvmwrite.c +1 -1
- data/{liblinear-1.95 → liblinear-2.1}/matlab/linear_model_matlab.c +1 -1
- data/{liblinear-1.95 → liblinear-2.1}/matlab/linear_model_matlab.h +0 -0
- data/liblinear-2.1/matlab/make.m +22 -0
- data/{liblinear-1.95 → liblinear-2.1}/matlab/predict.c +1 -1
- data/{liblinear-1.95 → liblinear-2.1}/matlab/train.c +65 -10
- data/{liblinear-1.95 → liblinear-2.1}/predict.c +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/python/Makefile +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/python/README +7 -0
- data/{liblinear-1.95 → liblinear-2.1}/python/liblinear.py +27 -8
- data/{liblinear-1.95 → liblinear-2.1}/python/liblinearutil.py +16 -2
- data/{liblinear-1.95 → liblinear-2.1}/train.c +51 -1
- data/{liblinear-1.95 → liblinear-2.1}/tron.cpp +14 -8
- data/{liblinear-1.95 → liblinear-2.1}/tron.h +2 -1
- data/liblinear-2.1/windows/liblinear.dll +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/windows/libsvmread.mexw64 +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/windows/libsvmwrite.mexw64 +0 -0
- data/liblinear-2.1/windows/predict.exe +0 -0
- data/{liblinear-1.95 → liblinear-2.1}/windows/predict.mexw64 +0 -0
- data/liblinear-2.1/windows/train.exe +0 -0
- data/liblinear-2.1/windows/train.mexw64 +0 -0
- data/liblinear-ruby.gemspec +9 -10
- metadata +49 -50
- data/liblinear-1.95/matlab/make.m +0 -21
- data/liblinear-1.95/windows/liblinear.dll +0 -0
- data/liblinear-1.95/windows/predict.exe +0 -0
- data/liblinear-1.95/windows/train.exe +0 -0
- data/liblinear-1.95/windows/train.mexw64 +0 -0
@@ -41,10 +41,11 @@ void TRON::info(const char *fmt,...)
|
|
41
41
|
(*tron_print_string)(buf);
|
42
42
|
}
|
43
43
|
|
44
|
-
TRON::TRON(const function *fun_obj, double eps, int max_iter)
|
44
|
+
TRON::TRON(const function *fun_obj, double eps, double eps_cg, int max_iter)
|
45
45
|
{
|
46
46
|
this->fun_obj=const_cast<function *>(fun_obj);
|
47
47
|
this->eps=eps;
|
48
|
+
this->eps_cg=eps_cg;
|
48
49
|
this->max_iter=max_iter;
|
49
50
|
tron_print_string = default_print;
|
50
51
|
}
|
@@ -68,23 +69,28 @@ void TRON::tron(double *w)
|
|
68
69
|
int search = 1, iter = 1, inc = 1;
|
69
70
|
double *s = new double[n];
|
70
71
|
double *r = new double[n];
|
71
|
-
double *w_new = new double[n];
|
72
72
|
double *g = new double[n];
|
73
73
|
|
74
|
+
// calculate gradient norm at w=0 for stopping condition.
|
75
|
+
double *w0 = new double[n];
|
74
76
|
for (i=0; i<n; i++)
|
75
|
-
|
77
|
+
w0[i] = 0;
|
78
|
+
fun_obj->fun(w0);
|
79
|
+
fun_obj->grad(w0, g);
|
80
|
+
double gnorm0 = dnrm2_(&n, g, &inc);
|
81
|
+
delete [] w0;
|
76
82
|
|
77
83
|
f = fun_obj->fun(w);
|
78
84
|
fun_obj->grad(w, g);
|
79
85
|
delta = dnrm2_(&n, g, &inc);
|
80
|
-
double
|
81
|
-
double gnorm = gnorm1;
|
86
|
+
double gnorm = delta;
|
82
87
|
|
83
|
-
if (gnorm <= eps*
|
88
|
+
if (gnorm <= eps*gnorm0)
|
84
89
|
search = 0;
|
85
90
|
|
86
91
|
iter = 1;
|
87
92
|
|
93
|
+
double *w_new = new double[n];
|
88
94
|
while (iter <= max_iter && search)
|
89
95
|
{
|
90
96
|
cg_iter = trcg(delta, g, s, r);
|
@@ -130,7 +136,7 @@ void TRON::tron(double *w)
|
|
130
136
|
fun_obj->grad(w, g);
|
131
137
|
|
132
138
|
gnorm = dnrm2_(&n, g, &inc);
|
133
|
-
if (gnorm <= eps*
|
139
|
+
if (gnorm <= eps*gnorm0)
|
134
140
|
break;
|
135
141
|
}
|
136
142
|
if (f < -1.0e+32)
|
@@ -172,7 +178,7 @@ int TRON::trcg(double delta, double *g, double *s, double *r)
|
|
172
178
|
r[i] = -g[i];
|
173
179
|
d[i] = r[i];
|
174
180
|
}
|
175
|
-
cgtol =
|
181
|
+
cgtol = eps_cg*dnrm2_(&n, g, &inc);
|
176
182
|
|
177
183
|
int cg_iter = 0;
|
178
184
|
rTr = ddot_(&n, r, &inc, r, &inc);
|
@@ -15,7 +15,7 @@ public:
|
|
15
15
|
class TRON
|
16
16
|
{
|
17
17
|
public:
|
18
|
-
TRON(const function *fun_obj, double eps = 0.1, int max_iter = 1000);
|
18
|
+
TRON(const function *fun_obj, double eps = 0.1, double eps_cg = 0.1, int max_iter = 1000);
|
19
19
|
~TRON();
|
20
20
|
|
21
21
|
void tron(double *w);
|
@@ -26,6 +26,7 @@ private:
|
|
26
26
|
double norm_inf(int n, double *x);
|
27
27
|
|
28
28
|
double eps;
|
29
|
+
double eps_cg;
|
29
30
|
int max_iter;
|
30
31
|
function *fun_obj;
|
31
32
|
void info(const char *fmt,...);
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/liblinear-ruby.gemspec
CHANGED
@@ -1,24 +1,23 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'liblinear
|
3
|
+
require 'liblinear'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
6
|
+
spec.name = 'liblinear-ruby'
|
8
7
|
spec.version = Liblinear::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
8
|
+
spec.authors = ['Kei Tsuchiya']
|
9
|
+
spec.email = ['kei.tsuchiya86@gmail.com']
|
11
10
|
spec.description = %q{Ruby wrapper of LIBLINEAR using SWIG}
|
12
11
|
spec.summary = %q{Ruby wrapper of LIBLINEAR using SWIG}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
12
|
+
spec.homepage = 'https://github.com/kei500/liblinear-ruby'
|
13
|
+
spec.license = 'MIT'
|
15
14
|
|
16
15
|
spec.files = `git ls-files`.split($/)
|
17
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
18
|
+
spec.require_paths = ['lib']
|
20
19
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
20
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
21
|
+
spec.add_development_dependency 'rake'
|
23
22
|
spec.extensions << 'ext/extconf.rb'
|
24
23
|
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liblinear-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
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: 2015-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
description: Ruby wrapper of LIBLINEAR using SWIG
|
@@ -46,7 +46,7 @@ extensions:
|
|
46
46
|
- ext/extconf.rb
|
47
47
|
extra_rdoc_files: []
|
48
48
|
files:
|
49
|
-
- .gitignore
|
49
|
+
- ".gitignore"
|
50
50
|
- Gemfile
|
51
51
|
- LICENSE.txt
|
52
52
|
- README.md
|
@@ -71,45 +71,45 @@ files:
|
|
71
71
|
- lib/liblinear/parameter.rb
|
72
72
|
- lib/liblinear/problem.rb
|
73
73
|
- lib/liblinear/version.rb
|
74
|
-
- liblinear-1
|
75
|
-
- liblinear-1
|
76
|
-
- liblinear-1
|
77
|
-
- liblinear-1
|
78
|
-
- liblinear-1
|
79
|
-
- liblinear-1
|
80
|
-
- liblinear-1
|
81
|
-
- liblinear-1
|
82
|
-
- liblinear-1
|
83
|
-
- liblinear-1
|
84
|
-
- liblinear-1
|
85
|
-
- liblinear-1
|
86
|
-
- liblinear-1
|
87
|
-
- liblinear-1
|
88
|
-
- liblinear-1
|
89
|
-
- liblinear-1
|
90
|
-
- liblinear-1
|
91
|
-
- liblinear-1
|
92
|
-
- liblinear-1
|
93
|
-
- liblinear-1
|
94
|
-
- liblinear-1
|
95
|
-
- liblinear-1
|
96
|
-
- liblinear-1
|
97
|
-
- liblinear-1
|
98
|
-
- liblinear-1
|
99
|
-
- liblinear-1
|
100
|
-
- liblinear-1
|
101
|
-
- liblinear-1
|
102
|
-
- liblinear-1
|
103
|
-
- liblinear-1
|
104
|
-
- liblinear-1
|
105
|
-
- liblinear-1
|
106
|
-
- liblinear-1
|
107
|
-
- liblinear-1
|
108
|
-
- liblinear-1
|
109
|
-
- liblinear-1
|
110
|
-
- liblinear-1
|
111
|
-
- liblinear-1
|
112
|
-
- liblinear-1
|
74
|
+
- liblinear-2.1/COPYRIGHT
|
75
|
+
- liblinear-2.1/Makefile
|
76
|
+
- liblinear-2.1/Makefile.win
|
77
|
+
- liblinear-2.1/README
|
78
|
+
- liblinear-2.1/blas/Makefile
|
79
|
+
- liblinear-2.1/blas/blas.h
|
80
|
+
- liblinear-2.1/blas/blasp.h
|
81
|
+
- liblinear-2.1/blas/daxpy.c
|
82
|
+
- liblinear-2.1/blas/ddot.c
|
83
|
+
- liblinear-2.1/blas/dnrm2.c
|
84
|
+
- liblinear-2.1/blas/dscal.c
|
85
|
+
- liblinear-2.1/heart_scale
|
86
|
+
- liblinear-2.1/linear.cpp
|
87
|
+
- liblinear-2.1/linear.def
|
88
|
+
- liblinear-2.1/linear.h
|
89
|
+
- liblinear-2.1/matlab/Makefile
|
90
|
+
- liblinear-2.1/matlab/README
|
91
|
+
- liblinear-2.1/matlab/libsvmread.c
|
92
|
+
- liblinear-2.1/matlab/libsvmwrite.c
|
93
|
+
- liblinear-2.1/matlab/linear_model_matlab.c
|
94
|
+
- liblinear-2.1/matlab/linear_model_matlab.h
|
95
|
+
- liblinear-2.1/matlab/make.m
|
96
|
+
- liblinear-2.1/matlab/predict.c
|
97
|
+
- liblinear-2.1/matlab/train.c
|
98
|
+
- liblinear-2.1/predict.c
|
99
|
+
- liblinear-2.1/python/Makefile
|
100
|
+
- liblinear-2.1/python/README
|
101
|
+
- liblinear-2.1/python/liblinear.py
|
102
|
+
- liblinear-2.1/python/liblinearutil.py
|
103
|
+
- liblinear-2.1/train.c
|
104
|
+
- liblinear-2.1/tron.cpp
|
105
|
+
- liblinear-2.1/tron.h
|
106
|
+
- liblinear-2.1/windows/liblinear.dll
|
107
|
+
- liblinear-2.1/windows/libsvmread.mexw64
|
108
|
+
- liblinear-2.1/windows/libsvmwrite.mexw64
|
109
|
+
- liblinear-2.1/windows/predict.exe
|
110
|
+
- liblinear-2.1/windows/predict.mexw64
|
111
|
+
- liblinear-2.1/windows/train.exe
|
112
|
+
- liblinear-2.1/windows/train.mexw64
|
113
113
|
- liblinear-ruby.gemspec
|
114
114
|
- spec/liblinear/cross_validator_spec.rb
|
115
115
|
- spec/liblinear/model_spec.rb
|
@@ -126,17 +126,17 @@ require_paths:
|
|
126
126
|
- lib
|
127
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
133
|
requirements:
|
134
|
-
- -
|
134
|
+
- - ">="
|
135
135
|
- !ruby/object:Gem::Version
|
136
136
|
version: '0'
|
137
137
|
requirements: []
|
138
138
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.
|
139
|
+
rubygems_version: 2.4.5
|
140
140
|
signing_key:
|
141
141
|
specification_version: 4
|
142
142
|
summary: Ruby wrapper of LIBLINEAR using SWIG
|
@@ -146,4 +146,3 @@ test_files:
|
|
146
146
|
- spec/liblinear/parameter_spec.rb
|
147
147
|
- spec/liblinear/problem_spec.rb
|
148
148
|
- spec/liblinear_spec.rb
|
149
|
-
has_rdoc:
|
@@ -1,21 +0,0 @@
|
|
1
|
-
% This make.m is for MATLAB and OCTAVE under Windows, Mac, and Unix
|
2
|
-
|
3
|
-
try
|
4
|
-
Type = ver;
|
5
|
-
% This part is for OCTAVE
|
6
|
-
if(strcmp(Type(1).Name, 'Octave') == 1)
|
7
|
-
mex libsvmread.c
|
8
|
-
mex libsvmwrite.c
|
9
|
-
mex train.c linear_model_matlab.c ../linear.cpp ../tron.cpp ../blas/daxpy.c ../blas/ddot.c ../blas/dnrm2.c ../blas/dscal.c
|
10
|
-
mex predict.c linear_model_matlab.c ../linear.cpp ../tron.cpp ../blas/daxpy.c ../blas/ddot.c ../blas/dnrm2.c ../blas/dscal.c
|
11
|
-
% This part is for MATLAB
|
12
|
-
% Add -largeArrayDims on 64-bit machines of MATLAB
|
13
|
-
else
|
14
|
-
mex CFLAGS="\$CFLAGS -std=c99" -largeArrayDims libsvmread.c
|
15
|
-
mex CFLAGS="\$CFLAGS -std=c99" -largeArrayDims libsvmwrite.c
|
16
|
-
mex CFLAGS="\$CFLAGS -std=c99" -largeArrayDims train.c linear_model_matlab.c ../linear.cpp ../tron.cpp ../blas/daxpy.c ../blas/ddot.c ../blas/dnrm2.c ../blas/dscal.c
|
17
|
-
mex CFLAGS="\$CFLAGS -std=c99" -largeArrayDims predict.c linear_model_matlab.c ../linear.cpp ../tron.cpp ../blas/daxpy.c ../blas/ddot.c ../blas/dnrm2.c ../blas/dscal.c
|
18
|
-
end
|
19
|
-
catch
|
20
|
-
fprintf('If make.m fails, please check README about detailed instructions.\n');
|
21
|
-
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|