numo-libsvm 0.1.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 +7 -0
- data/.gitignore +20 -0
- data/.rspec +3 -0
- data/.travis.yml +14 -0
- data/CHANGELOG.md +2 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +27 -0
- data/README.md +180 -0
- data/Rakefile +15 -0
- data/ext/numo/libsvm/converter.c +162 -0
- data/ext/numo/libsvm/converter.h +19 -0
- data/ext/numo/libsvm/extconf.rb +43 -0
- data/ext/numo/libsvm/kernel_type.c +22 -0
- data/ext/numo/libsvm/kernel_type.h +9 -0
- data/ext/numo/libsvm/libsvmext.c +486 -0
- data/ext/numo/libsvm/libsvmext.h +17 -0
- data/ext/numo/libsvm/svm_model.c +89 -0
- data/ext/numo/libsvm/svm_model.h +15 -0
- data/ext/numo/libsvm/svm_parameter.c +88 -0
- data/ext/numo/libsvm/svm_parameter.h +15 -0
- data/ext/numo/libsvm/svm_type.c +22 -0
- data/ext/numo/libsvm/svm_type.h +9 -0
- data/lib/numo/libsvm.rb +5 -0
- data/lib/numo/libsvm/version.rb +8 -0
- data/numo-libsvm.gemspec +41 -0
- metadata +145 -0
@@ -0,0 +1,17 @@
|
|
1
|
+
#ifndef NUMO_LIBSVMEXT_H
|
2
|
+
#define NUMO_LIBSVMEXT_H 1
|
3
|
+
|
4
|
+
#include <math.h>
|
5
|
+
#include <string.h>
|
6
|
+
#include <svm.h>
|
7
|
+
#include <ruby.h>
|
8
|
+
#include <numo/narray.h>
|
9
|
+
#include <numo/template.h>
|
10
|
+
|
11
|
+
#include "converter.h"
|
12
|
+
#include "svm_parameter.h"
|
13
|
+
#include "svm_model.h"
|
14
|
+
#include "svm_type.h"
|
15
|
+
#include "kernel_type.h"
|
16
|
+
|
17
|
+
#endif /* NUMO_LIBSVMEXT_H */
|
@@ -0,0 +1,89 @@
|
|
1
|
+
|
2
|
+
#include "svm_model.h"
|
3
|
+
|
4
|
+
struct svm_model* rb_hash_to_svm_model(VALUE model_hash)
|
5
|
+
{
|
6
|
+
VALUE el;
|
7
|
+
struct svm_model* model = ALLOC(struct svm_model);
|
8
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("nr_class")));
|
9
|
+
model->nr_class = el != Qnil ? NUM2INT(el) : 0;
|
10
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("l")));
|
11
|
+
model->l = el != Qnil ? NUM2INT(el) : 0;
|
12
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("SV")));
|
13
|
+
model->SV = nary_to_svm_nodes(el);
|
14
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("sv_coef")));
|
15
|
+
model->sv_coef = nary_to_dbl_mat(el);
|
16
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("rho")));
|
17
|
+
model->rho = nary_to_dbl_vec(el);
|
18
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("probA")));
|
19
|
+
model->probA = nary_to_dbl_vec(el);
|
20
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("probB")));
|
21
|
+
model->probB = nary_to_dbl_vec(el);
|
22
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("sv_indices")));
|
23
|
+
model->sv_indices = nary_to_int_vec(el);
|
24
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("label")));
|
25
|
+
model->label = nary_to_int_vec(el);
|
26
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("nSV")));
|
27
|
+
model->nSV = nary_to_int_vec(el);
|
28
|
+
el = rb_hash_aref(model_hash, ID2SYM(rb_intern("free_sv")));
|
29
|
+
model->free_sv = el != Qnil ? NUM2INT(el) : 0;
|
30
|
+
return model;
|
31
|
+
}
|
32
|
+
|
33
|
+
VALUE svm_model_to_rb_hash(struct svm_model* const model)
|
34
|
+
{
|
35
|
+
int const n_classes = model->nr_class;
|
36
|
+
int const n_support_vecs = model->l;
|
37
|
+
VALUE support_vecs = model->SV ? svm_nodes_to_nary(model->SV, n_support_vecs) : Qnil;
|
38
|
+
VALUE coefficients = model->sv_coef ? dbl_mat_to_nary(model->sv_coef, n_classes - 1, n_support_vecs) : Qnil;
|
39
|
+
VALUE intercepts = model->rho ? dbl_vec_to_nary(model->rho, n_classes * (n_classes - 1) / 2) : Qnil;
|
40
|
+
VALUE prob_alpha = model->probA ? dbl_vec_to_nary(model->probA, n_classes * (n_classes - 1) / 2) : Qnil;
|
41
|
+
VALUE prob_beta = model->probB ? dbl_vec_to_nary(model->probB, n_classes * (n_classes - 1) / 2) : Qnil;
|
42
|
+
VALUE sv_indices = model->sv_indices ? int_vec_to_nary(model->sv_indices, n_support_vecs) : Qnil;
|
43
|
+
VALUE labels = model->label ? int_vec_to_nary(model->label, n_classes) : Qnil;
|
44
|
+
VALUE n_support_vecs_each_class = model->nSV ? int_vec_to_nary(model->nSV, n_classes) : Qnil;
|
45
|
+
VALUE model_hash = rb_hash_new();
|
46
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("nr_class")), INT2NUM(n_classes));
|
47
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("l")), INT2NUM(n_support_vecs));
|
48
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("SV")), support_vecs);
|
49
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("sv_coef")), coefficients);
|
50
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("rho")), intercepts);
|
51
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("probA")), prob_alpha);
|
52
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("probB")), prob_beta);
|
53
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("sv_indices")), sv_indices);
|
54
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("label")), labels);
|
55
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("nSV")), n_support_vecs_each_class);
|
56
|
+
rb_hash_aset(model_hash, ID2SYM(rb_intern("free_sv")), INT2NUM(model->free_sv));
|
57
|
+
return model_hash;
|
58
|
+
}
|
59
|
+
|
60
|
+
void xfree_svm_model(struct svm_model* model)
|
61
|
+
{
|
62
|
+
int i;
|
63
|
+
if (model) {
|
64
|
+
if (model->SV) {
|
65
|
+
for (i = 0; i < model->l; xfree(model->SV[i++]));
|
66
|
+
xfree(model->SV);
|
67
|
+
model->SV = NULL;
|
68
|
+
}
|
69
|
+
if (model->sv_coef) {
|
70
|
+
for (i = 0; i < model->nr_class - 1; xfree(model->sv_coef[i++]));
|
71
|
+
xfree(model->sv_coef);
|
72
|
+
model->sv_coef = NULL;
|
73
|
+
}
|
74
|
+
xfree(model->rho);
|
75
|
+
model->rho = NULL;
|
76
|
+
xfree(model->probA);
|
77
|
+
model->probA = NULL;
|
78
|
+
xfree(model->probB);
|
79
|
+
model->probB = NULL;
|
80
|
+
xfree(model->sv_indices);
|
81
|
+
model->sv_indices = NULL;
|
82
|
+
xfree(model->label);
|
83
|
+
model->label = NULL;
|
84
|
+
xfree(model->nSV);
|
85
|
+
model->nSV = NULL;
|
86
|
+
xfree(model);
|
87
|
+
model = NULL;
|
88
|
+
}
|
89
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#ifndef NUMO_LIBSVM_SVM_MODEL_H
|
2
|
+
#define NUMO_LIBSVM_SVM_MODEL_H 1
|
3
|
+
|
4
|
+
#include <svm.h>
|
5
|
+
#include <ruby.h>
|
6
|
+
#include <numo/narray.h>
|
7
|
+
#include <numo/template.h>
|
8
|
+
|
9
|
+
#include "converter.h"
|
10
|
+
|
11
|
+
struct svm_model* rb_hash_to_svm_model(VALUE model_hash);
|
12
|
+
VALUE svm_model_to_rb_hash(struct svm_model* const model);
|
13
|
+
void xfree_svm_model(struct svm_model* model);
|
14
|
+
|
15
|
+
#endif /* NUMO_LIBSVM_SVM_MODEL_H */
|
@@ -0,0 +1,88 @@
|
|
1
|
+
|
2
|
+
#include "svm_parameter.h"
|
3
|
+
|
4
|
+
struct svm_parameter* rb_hash_to_svm_parameter(VALUE param_hash)
|
5
|
+
{
|
6
|
+
VALUE el;
|
7
|
+
struct svm_parameter* param = ALLOC(struct svm_parameter);
|
8
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("svm_type")));
|
9
|
+
param->svm_type = !NIL_P(el) ? NUM2INT(el) : C_SVC;
|
10
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("kernel_type")));
|
11
|
+
param->kernel_type = !NIL_P(el) ? NUM2INT(el) : RBF;
|
12
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("degree")));
|
13
|
+
param->degree = !NIL_P(el) ? NUM2INT(el) : 3;
|
14
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("gamma")));
|
15
|
+
param->gamma = !NIL_P(el) ? NUM2DBL(el) : 1;
|
16
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("coef0")));
|
17
|
+
param->coef0 = !NIL_P(el) ? NUM2DBL(el) : 0;
|
18
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("cache_size")));
|
19
|
+
param->cache_size = !NIL_P(el) ? NUM2DBL(el) : 100;
|
20
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("eps")));
|
21
|
+
param->eps = !NIL_P(el) ? NUM2DBL(el) : 1e-3;
|
22
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("C")));
|
23
|
+
param->C = !NIL_P(el) ? NUM2DBL(el) : 1;
|
24
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("nr_weight")));
|
25
|
+
param->nr_weight = !NIL_P(el) ? NUM2INT(el) : 0;
|
26
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("nu")));
|
27
|
+
param->nu = !NIL_P(el) ? NUM2DBL(el) : 0.5;
|
28
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("p")));
|
29
|
+
param->p = !NIL_P(el) ? NUM2DBL(el) : 0.1;
|
30
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("shrinking")));
|
31
|
+
param->shrinking = RB_TYPE_P(el, T_FALSE) ? 0 : 1;
|
32
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("probability")));
|
33
|
+
param->probability = RB_TYPE_P(el, T_TRUE) ? 1 : 0;
|
34
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("weight_label")));
|
35
|
+
param->weight_label = NULL;
|
36
|
+
if (!NIL_P(el)) {
|
37
|
+
param->weight_label = ALLOC_N(int, param->nr_weight);
|
38
|
+
memcpy(param->weight_label, (int32_t*)na_get_pointer_for_read(el), param->nr_weight);
|
39
|
+
}
|
40
|
+
el = rb_hash_aref(param_hash, ID2SYM(rb_intern("weight")));
|
41
|
+
param->weight = NULL;
|
42
|
+
if (!NIL_P(el)) {
|
43
|
+
param->weight = ALLOC_N(double, param->nr_weight);
|
44
|
+
memcpy(param->weight, (double*)na_get_pointer_for_read(el), param->nr_weight);
|
45
|
+
}
|
46
|
+
return param;
|
47
|
+
}
|
48
|
+
|
49
|
+
VALUE svm_parameter_to_rb_hash(struct svm_parameter* const param)
|
50
|
+
{
|
51
|
+
VALUE param_hash = rb_hash_new();
|
52
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("svm_type")), INT2NUM(param->svm_type));
|
53
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("kernel_type")), INT2NUM(param->kernel_type));
|
54
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("degree")), INT2NUM(param->degree));
|
55
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("gamma")), DBL2NUM(param->gamma));
|
56
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("coef0")), DBL2NUM(param->coef0));
|
57
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("cache_size")), DBL2NUM(param->cache_size));
|
58
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("eps")), DBL2NUM(param->eps));
|
59
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("C")), DBL2NUM(param->C));
|
60
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("nr_weight")), INT2NUM(param->nr_weight));
|
61
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("nu")), DBL2NUM(param->nu));
|
62
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("p")), DBL2NUM(param->p));
|
63
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("shrinking")),
|
64
|
+
param->shrinking == 1 ? Qtrue : Qfalse);
|
65
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("probability")),
|
66
|
+
param->probability == 1 ? Qtrue : Qfalse);
|
67
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("weight_label")),
|
68
|
+
param->weight_label ? int_vec_to_nary(param->weight_label, param->nr_weight) : Qnil);
|
69
|
+
rb_hash_aset(param_hash, ID2SYM(rb_intern("weight")),
|
70
|
+
param->weight ? dbl_vec_to_nary(param->weight, param->nr_weight) : Qnil);
|
71
|
+
return param_hash;
|
72
|
+
}
|
73
|
+
|
74
|
+
void xfree_svm_parameter(struct svm_parameter* param)
|
75
|
+
{
|
76
|
+
if (param) {
|
77
|
+
if (param->weight_label) {
|
78
|
+
xfree(param->weight_label);
|
79
|
+
param->weight_label = NULL;
|
80
|
+
}
|
81
|
+
if (param->weight) {
|
82
|
+
xfree(param->weight);
|
83
|
+
param->weight = NULL;
|
84
|
+
}
|
85
|
+
xfree(param);
|
86
|
+
param = NULL;
|
87
|
+
}
|
88
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
#ifndef NUMO_LIBSVM_SVM_PARAMETER_H
|
2
|
+
#define NUMO_LIBSVM_SVM_PARAMETER_H 1
|
3
|
+
|
4
|
+
#include <svm.h>
|
5
|
+
#include <ruby.h>
|
6
|
+
#include <numo/narray.h>
|
7
|
+
#include <numo/template.h>
|
8
|
+
|
9
|
+
#include "converter.h"
|
10
|
+
|
11
|
+
struct svm_parameter* rb_hash_to_svm_parameter(VALUE param_hash);
|
12
|
+
VALUE svm_parameter_to_rb_hash(struct svm_parameter* const param);
|
13
|
+
void xfree_svm_parameter(struct svm_parameter* param);
|
14
|
+
|
15
|
+
#endif /* NUMO_LIBSVM_SVM_PARAMETER_H */
|
@@ -0,0 +1,22 @@
|
|
1
|
+
#include "svm_type.h"
|
2
|
+
|
3
|
+
RUBY_EXTERN VALUE mLibsvm;
|
4
|
+
|
5
|
+
void rb_init_svm_type_module()
|
6
|
+
{
|
7
|
+
/**
|
8
|
+
* Document-module: Numo::Libsvm::SvmType
|
9
|
+
* The module consisting of constants for SVM algorithm type that used for parameter of LIBSVM.
|
10
|
+
*/
|
11
|
+
VALUE mSvmType = rb_define_module_under(mLibsvm, "SvmType");
|
12
|
+
/* C-SVM classification */
|
13
|
+
rb_define_const(mSvmType, "C_SVC", INT2NUM(C_SVC));
|
14
|
+
/* nu-SVM classification */
|
15
|
+
rb_define_const(mSvmType, "NU_SVC", INT2NUM(NU_SVC));
|
16
|
+
/* one-class-SVM */
|
17
|
+
rb_define_const(mSvmType, "ONE_CLASS", INT2NUM(ONE_CLASS));
|
18
|
+
/* epsilon-SVM regression */
|
19
|
+
rb_define_const(mSvmType, "EPSILON_SVR", INT2NUM(EPSILON_SVR));
|
20
|
+
/* nu-SVM regression */
|
21
|
+
rb_define_const(mSvmType, "NU_SVR", INT2NUM(NU_SVR));
|
22
|
+
}
|
data/lib/numo/libsvm.rb
ADDED
data/numo-libsvm.gemspec
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require 'numo/libsvm/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'numo-libsvm'
|
9
|
+
spec.version = Numo::Libsvm::VERSION
|
10
|
+
spec.authors = ['yoshoku']
|
11
|
+
spec.email = ['yoshoku@outlook.com']
|
12
|
+
|
13
|
+
spec.summary = <<~MSG
|
14
|
+
Numo::Libsvm is a Ruby gem binding to the LIBSVM library.
|
15
|
+
Numo::Libsvm makes to use the LIBSVM functions with dataset represented by Numo::NArray.
|
16
|
+
MSG
|
17
|
+
spec.description = <<~MSG
|
18
|
+
Numo::Libsvm is a Ruby gem binding to the LIBSVM library.
|
19
|
+
LIBSVM is one of the famous libraries that implemented Support Vector Machines,
|
20
|
+
and provides functions for support vector classifier, regression, and distribution estimation.
|
21
|
+
Numo::Libsvm makes to use the LIBSVM functions with dataset represented by Numo::NArray.
|
22
|
+
MSG
|
23
|
+
spec.homepage = 'https://github.com/yoshoku/numo-libsvm'
|
24
|
+
spec.license = 'BSD-3-Clause'
|
25
|
+
|
26
|
+
# Specify which files should be added to the gem when it is released.
|
27
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
28
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
29
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
30
|
+
end
|
31
|
+
spec.bindir = 'exe'
|
32
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
33
|
+
spec.require_paths = ['lib']
|
34
|
+
spec.extensions = ['ext/numo/libsvm/extconf.rb']
|
35
|
+
|
36
|
+
spec.add_runtime_dependency 'numo-narray', '~> 0.9.1'
|
37
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
38
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
39
|
+
spec.add_development_dependency 'rake-compiler', '~> 1.0'
|
40
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: numo-libsvm
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- yoshoku
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-07-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: numo-narray
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.9.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.9.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake-compiler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
description: |
|
84
|
+
Numo::Libsvm is a Ruby gem binding to the LIBSVM library.
|
85
|
+
LIBSVM is one of the famous libraries that implemented Support Vector Machines,
|
86
|
+
and provides functions for support vector classifier, regression, and distribution estimation.
|
87
|
+
Numo::Libsvm makes to use the LIBSVM functions with dataset represented by Numo::NArray.
|
88
|
+
email:
|
89
|
+
- yoshoku@outlook.com
|
90
|
+
executables: []
|
91
|
+
extensions:
|
92
|
+
- ext/numo/libsvm/extconf.rb
|
93
|
+
extra_rdoc_files: []
|
94
|
+
files:
|
95
|
+
- ".gitignore"
|
96
|
+
- ".rspec"
|
97
|
+
- ".travis.yml"
|
98
|
+
- CHANGELOG.md
|
99
|
+
- CODE_OF_CONDUCT.md
|
100
|
+
- Gemfile
|
101
|
+
- LICENSE.txt
|
102
|
+
- README.md
|
103
|
+
- Rakefile
|
104
|
+
- ext/numo/libsvm/converter.c
|
105
|
+
- ext/numo/libsvm/converter.h
|
106
|
+
- ext/numo/libsvm/extconf.rb
|
107
|
+
- ext/numo/libsvm/kernel_type.c
|
108
|
+
- ext/numo/libsvm/kernel_type.h
|
109
|
+
- ext/numo/libsvm/libsvmext.c
|
110
|
+
- ext/numo/libsvm/libsvmext.h
|
111
|
+
- ext/numo/libsvm/svm_model.c
|
112
|
+
- ext/numo/libsvm/svm_model.h
|
113
|
+
- ext/numo/libsvm/svm_parameter.c
|
114
|
+
- ext/numo/libsvm/svm_parameter.h
|
115
|
+
- ext/numo/libsvm/svm_type.c
|
116
|
+
- ext/numo/libsvm/svm_type.h
|
117
|
+
- lib/numo/libsvm.rb
|
118
|
+
- lib/numo/libsvm/version.rb
|
119
|
+
- numo-libsvm.gemspec
|
120
|
+
homepage: https://github.com/yoshoku/numo-libsvm
|
121
|
+
licenses:
|
122
|
+
- BSD-3-Clause
|
123
|
+
metadata: {}
|
124
|
+
post_install_message:
|
125
|
+
rdoc_options: []
|
126
|
+
require_paths:
|
127
|
+
- lib
|
128
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
requirements: []
|
139
|
+
rubyforge_project:
|
140
|
+
rubygems_version: 2.6.14.4
|
141
|
+
signing_key:
|
142
|
+
specification_version: 4
|
143
|
+
summary: Numo::Libsvm is a Ruby gem binding to the LIBSVM library. Numo::Libsvm makes
|
144
|
+
to use the LIBSVM functions with dataset represented by Numo::NArray.
|
145
|
+
test_files: []
|