numo-libsvm 0.2.0 → 0.3.0
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 -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
|
[![Build Status](https://travis-ci.org/yoshoku/numo-libsvm.svg?branch=master)](https://travis-ci.org/yoshoku/numo-libsvm)
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/numo-libsvm.svg)](https://badge.fury.io/rb/numo-libsvm)
|
5
5
|
[![BSD 3-Clause License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://github.com/yoshoku/numo-libsvm/blob/master/LICENSE.txt)
|
6
|
-
[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](https://www.rubydoc.info/gems/numo-libsvm/0.
|
6
|
+
[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](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
|