numo-libsvm 0.2.0 → 0.3.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/CHANGELOG.md +5 -1
- data/README.md +3 -3
- data/ext/numo/libsvm/libsvmext.c +36 -0
- data/lib/numo/libsvm/version.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: c8cf97ac572136b9ee1d0919dc308eded11bc3ce
|
4
|
+
data.tar.gz: 6df5e37fa325cf802643626c95f88498b75f50a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac703a48952bfcf3909c672f6901c8873e4c5e1f2c998da28d3912bc62d254f4cb2e689417c8472fb9e10a9f80c6a9f4cfda4b64850de1cbb4ca1d34527277da
|
7
|
+
data.tar.gz: 826f1d341a53c733dfc0917615829b66673d18e43cd4efce062634057b84201347a1398da2dbb6b80b8baaebfbea784b8c10d57f2b0e7da73e9ac6e9389d2917
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
+
# 0.3.0
|
2
|
+
- Add random_seed parameter for specifying seed to give to srand function.
|
3
|
+
- Several documentation improvements.
|
4
|
+
|
1
5
|
# 0.2.0
|
2
|
-
- Add
|
6
|
+
- Add validation of method parameters.
|
3
7
|
- Several documentation improvements.
|
4
8
|
|
5
9
|
# 0.1.0
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
[](https://travis-ci.org/yoshoku/numo-libsvm)
|
4
4
|
[](https://badge.fury.io/rb/numo-libsvm)
|
5
5
|
[](https://github.com/yoshoku/numo-libsvm/blob/master/LICENSE.txt)
|
6
|
-
[](https://www.rubydoc.info/gems/numo-libsvm/0.
|
6
|
+
[](https://www.rubydoc.info/gems/numo-libsvm/0.3.0)
|
7
7
|
|
8
8
|
Numo::Libsvm is a Ruby gem binding to the [LIBSVM](https://github.com/cjlin1/libsvm) library.
|
9
9
|
LIBSVM is one of the famous libraries that implemented Support Vector Machines,
|
@@ -172,7 +172,6 @@ The svm_parameter is detailed in [LIBSVM README](https://github.com/cjlin1/libsv
|
|
172
172
|
param = {
|
173
173
|
svm_type: # [Integer] Type of SVM
|
174
174
|
Numo::Libsvm::SvmType::C_SVC,
|
175
|
-
# for kernel function
|
176
175
|
kernel_type: # [Integer] Type of kernel function
|
177
176
|
Numo::Libsvm::KernelType::RBF,
|
178
177
|
degree: 3, # [Integer] Degree in polynomial kernel function
|
@@ -190,7 +189,8 @@ param = {
|
|
190
189
|
nu: 0.5, # [Float] Parameter nu of nu-SVC, one-class SVM, and nu-SVR
|
191
190
|
p: 0.1, # [Float] Parameter epsilon in loss function of epsilon-SVR
|
192
191
|
shrinking: true, # [Boolean] Whether to use the shrinking heuristics
|
193
|
-
probability: false
|
192
|
+
probability: false, # [Boolean] Whether to train a SVC or SVR model for probability estimates
|
193
|
+
random_seed: 1 # [Integer/Nil] Random seed
|
194
194
|
}
|
195
195
|
```
|
196
196
|
|
data/ext/numo/libsvm/libsvmext.c
CHANGED
@@ -16,6 +16,30 @@ void print_null(const char *s) {}
|
|
16
16
|
* @param y [Numo::DFloat] (shape: [n_samples]) The labels or target values for samples.
|
17
17
|
* @param param [Hash] The parameters of an SVM model.
|
18
18
|
*
|
19
|
+
* @example
|
20
|
+
* require 'numo/libsvm'
|
21
|
+
*
|
22
|
+
* # Prepare XOR data.
|
23
|
+
* x = Numo::DFloat[[-0.8, -0.7], [0.9, 0.8], [-0.7, 0.9], [0.8, -0.9]]
|
24
|
+
* y = Numo::Int32[-1, -1, 1, 1]
|
25
|
+
*
|
26
|
+
* # Train C-Support Vector Classifier with RBF kernel.
|
27
|
+
* param = {
|
28
|
+
* svm_type: Numo::Libsvm::SvmType::C_SVC,
|
29
|
+
* kernel_type: Numo::Libsvm::KernelType::RBF,
|
30
|
+
* gamma: 2.0,
|
31
|
+
* C: 1,
|
32
|
+
* random_seed: 1
|
33
|
+
* }
|
34
|
+
* model = Numo::Libsvm.train(x, y, param)
|
35
|
+
*
|
36
|
+
* # Predict labels of test data.
|
37
|
+
* x_test = Numo::DFloat[[-0.4, -0.5], [0.5, -0.4]]
|
38
|
+
* result = Numo::Libsvm.predict(x_test, param, model)
|
39
|
+
* p result
|
40
|
+
* # Numo::DFloat#shape=[2]
|
41
|
+
* # [-1, 1]
|
42
|
+
*
|
19
43
|
* @raise [ArgumentError] If the sample array is not 2-dimensional, the label array is not 1-dimensional,
|
20
44
|
* the sample array and label array do not have the same number of samples, or
|
21
45
|
* the hyperparameter has an invalid value, this error is raised.
|
@@ -30,6 +54,7 @@ VALUE train(VALUE self, VALUE x_val, VALUE y_val, VALUE param_hash)
|
|
30
54
|
narray_t* x_nary;
|
31
55
|
narray_t* y_nary;
|
32
56
|
char* err_msg;
|
57
|
+
VALUE random_seed;
|
33
58
|
VALUE model_hash;
|
34
59
|
|
35
60
|
if (CLASS_OF(x_val) != numo_cDFloat) {
|
@@ -60,6 +85,11 @@ VALUE train(VALUE self, VALUE x_val, VALUE y_val, VALUE param_hash)
|
|
60
85
|
return Qnil;
|
61
86
|
}
|
62
87
|
|
88
|
+
random_seed = rb_hash_aref(param_hash, ID2SYM(rb_intern("random_seed")));
|
89
|
+
if (!NIL_P(random_seed)) {
|
90
|
+
srand(NUM2UINT(random_seed));
|
91
|
+
}
|
92
|
+
|
63
93
|
param = rb_hash_to_svm_parameter(param_hash);
|
64
94
|
problem = dataset_to_svm_problem(x_val, y_val);
|
65
95
|
|
@@ -107,6 +137,7 @@ VALUE cross_validation(VALUE self, VALUE x_val, VALUE y_val, VALUE param_hash, V
|
|
107
137
|
narray_t* x_nary;
|
108
138
|
narray_t* y_nary;
|
109
139
|
char* err_msg;
|
140
|
+
VALUE random_seed;
|
110
141
|
struct svm_problem* problem;
|
111
142
|
struct svm_parameter* param;
|
112
143
|
|
@@ -138,6 +169,11 @@ VALUE cross_validation(VALUE self, VALUE x_val, VALUE y_val, VALUE param_hash, V
|
|
138
169
|
return Qnil;
|
139
170
|
}
|
140
171
|
|
172
|
+
random_seed = rb_hash_aref(param_hash, ID2SYM(rb_intern("random_seed")));
|
173
|
+
if (!NIL_P(random_seed)) {
|
174
|
+
srand(NUM2UINT(random_seed));
|
175
|
+
}
|
176
|
+
|
141
177
|
param = rb_hash_to_svm_parameter(param_hash);
|
142
178
|
problem = dataset_to_svm_problem(x_val, y_val);
|
143
179
|
|
data/lib/numo/libsvm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: numo-libsvm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yoshoku
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-08-
|
11
|
+
date: 2019-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: numo-narray
|