svmkit 0.1.3 → 0.2.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.
@@ -15,17 +15,16 @@ module SVMKit
15
15
  include Base::Transformer
16
16
 
17
17
  # Return the vector consists of the mean value for each feature.
18
- # @return [NMatrix] (shape: [1, n_features])
18
+ # @return [Numo::DFloat] (shape: [n_features])
19
19
  attr_reader :mean_vec
20
20
 
21
21
  # Return the vector consists of the standard deviation for each feature.
22
- # @return [NMatrix] (shape: [1, n_features])
22
+ # @return [Numo::DFloat] (shape: [n_features])
23
23
  attr_reader :std_vec
24
24
 
25
25
  # Create a new normalizer for centering and scaling to unit variance.
26
- #
27
- # @overload new() -> StandardScaler
28
- def initialize(_params = {})
26
+ def initialize()
27
+ self.params = {}
29
28
  @mean_vec = nil
30
29
  @std_vec = nil
31
30
  end
@@ -34,47 +33,47 @@ module SVMKit
34
33
  #
35
34
  # @overload fit(x) -> StandardScaler
36
35
  #
37
- # @param x [NMatrix] (shape: [n_samples, n_features])
36
+ # @param x [Numo::DFloat] (shape: [n_samples, n_features])
38
37
  # The samples to calculate the mean values and standard deviations.
39
38
  # @return [StandardScaler]
40
39
  def fit(x, _y = nil)
41
40
  @mean_vec = x.mean(0)
42
- @std_vec = x.std(0)
41
+ @std_vec = x.stddev(0)
43
42
  self
44
43
  end
45
44
 
46
45
  # Calculate the mean values and standard deviations, and then normalize samples using them.
47
46
  #
48
- # @overload fit_transform(x) -> NMatrix
47
+ # @overload fit_transform(x) -> Numo::DFloat
49
48
  #
50
- # @param x [NMatrix] (shape: [n_samples, n_features])
49
+ # @param x [Numo::DFloat] (shape: [n_samples, n_features])
51
50
  # The samples to calculate the mean values and standard deviations.
52
- # @return [NMatrix] The scaled samples.
51
+ # @return [Numo::DFloat] The scaled samples.
53
52
  def fit_transform(x, _y = nil)
54
53
  fit(x).transform(x)
55
54
  end
56
55
 
57
56
  # Perform standardization the given samples.
58
57
  #
59
- # @param x [NMatrix] (shape: [n_samples, n_features]) The samples to be scaled.
60
- # @return [NMatrix] The scaled samples.
58
+ # @param x [Numo::DFloat] (shape: [n_samples, n_features]) The samples to be scaled.
59
+ # @return [Numo::DFloat] The scaled samples.
61
60
  def transform(x)
62
61
  n_samples, = x.shape
63
- (x - @mean_vec.repeat(n_samples, 0)) / @std_vec.repeat(n_samples, 0)
62
+ (x - @mean_vec.tile(n_samples, 1)) / @std_vec.tile(n_samples, 1)
64
63
  end
65
64
 
66
65
  # Dump marshal data.
67
66
  # @return [Hash] The marshal data about StandardScaler.
68
67
  def marshal_dump
69
- { mean_vec: Utils.dump_nmatrix(@mean_vec),
70
- std_vec: Utils.dump_nmatrix(@std_vec) }
68
+ { mean_vec: @mean_vec,
69
+ std_vec: @std_vec }
71
70
  end
72
71
 
73
72
  # Load marshal data.
74
73
  # @return [nil]
75
74
  def marshal_load(obj)
76
- @mean_vec = Utils.restore_nmatrix(obj[:mean_vec])
77
- @std_vec = Utils.restore_nmatrix(obj[:std_vec])
75
+ @mean_vec = obj[:mean_vec]
76
+ @std_vec = obj[:std_vec]
78
77
  nil
79
78
  end
80
79
  end
@@ -1,5 +1,5 @@
1
1
  # SVMKit is an experimental library of machine learning in Ruby.
2
2
  module SVMKit
3
3
  # @!visibility private
4
- VERSION = '0.1.3'.freeze
4
+ VERSION = '0.2.0'.freeze
5
5
  end
data/svmkit.gemspec CHANGED
@@ -1,7 +1,6 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
-
5
4
  require 'svmkit/version'
6
5
 
7
6
  SVMKit::DESCRIPTION = <<MSG
@@ -28,10 +27,23 @@ Gem::Specification.new do |spec|
28
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
28
  spec.require_paths = ['lib']
30
29
 
31
- #spec.add_runtime_dependency 'nmatrix', '~> 0.2.3'
30
+ spec.required_ruby_version = '>= 2.1'
31
+
32
+ spec.add_runtime_dependency 'numo-narray', '>= 0.9.0.5'
32
33
 
33
34
  spec.add_development_dependency 'bundler', '~> 1.15'
34
35
  spec.add_development_dependency 'rake', '~> 10.0'
35
36
  spec.add_development_dependency 'rspec', '~> 3.0'
36
- spec.add_development_dependency 'nmatrix', '~> 0.2.3'
37
+ spec.add_development_dependency 'simplecov', '~> 0.15.1'
38
+ spec.add_development_dependency 'numo-narray', '~> 0.9.0.9'
39
+
40
+ spec.post_install_message = <<-EOF
41
+ *************************************************************************
42
+ Thank you for installing SVMKit!!
43
+
44
+ Note that the SVMKit has been changed to use Numo::NArray for
45
+ linear algebra library from version 0.2.0.
46
+ *************************************************************************
47
+ EOF
48
+
37
49
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: svmkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - yoshoku
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-18 00:00:00.000000000 Z
11
+ date: 2017-11-05 00:00:00.000000000 Z
12
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.0.5
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.0.5
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,19 +67,33 @@ dependencies:
53
67
  - !ruby/object:Gem::Version
54
68
  version: '3.0'
55
69
  - !ruby/object:Gem::Dependency
56
- name: nmatrix
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.15.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.15.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: numo-narray
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: 0.2.3
89
+ version: 0.9.0.9
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: 0.2.3
96
+ version: 0.9.0.9
69
97
  description: |
70
98
  SVMKit is a library for machine learninig in Ruby.
71
99
  SVMKit implements machine learning algorithms with an interface similar to Scikit-Learn in Python.
@@ -92,23 +120,29 @@ files:
92
120
  - lib/svmkit/base/base_estimator.rb
93
121
  - lib/svmkit/base/classifier.rb
94
122
  - lib/svmkit/base/transformer.rb
123
+ - lib/svmkit/dataset.rb
95
124
  - lib/svmkit/kernel_approximation/rbf.rb
96
125
  - lib/svmkit/kernel_machine/kernel_svc.rb
97
126
  - lib/svmkit/linear_model/logistic_regression.rb
98
- - lib/svmkit/linear_model/pegasos_svc.rb
127
+ - lib/svmkit/linear_model/svc.rb
99
128
  - lib/svmkit/multiclass/one_vs_rest_classifier.rb
100
129
  - lib/svmkit/pairwise_metric.rb
101
130
  - lib/svmkit/preprocessing/l2_normalizer.rb
102
131
  - lib/svmkit/preprocessing/min_max_scaler.rb
103
132
  - lib/svmkit/preprocessing/standard_scaler.rb
104
- - lib/svmkit/utils.rb
105
133
  - lib/svmkit/version.rb
106
134
  - svmkit.gemspec
107
135
  homepage: https://github.com/yoshoku/svmkit
108
136
  licenses:
109
137
  - BSD-2-Clause
110
138
  metadata: {}
111
- post_install_message:
139
+ post_install_message: |
140
+ *************************************************************************
141
+ Thank you for installing SVMKit!!
142
+
143
+ Note that the SVMKit has been changed to use Numo::NArray for
144
+ linear algebra library from version 0.2.0.
145
+ *************************************************************************
112
146
  rdoc_options: []
113
147
  require_paths:
114
148
  - lib
@@ -116,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
150
  requirements:
117
151
  - - ">="
118
152
  - !ruby/object:Gem::Version
119
- version: '0'
153
+ version: '2.1'
120
154
  required_rubygems_version: !ruby/object:Gem::Requirement
121
155
  requirements:
122
156
  - - ">="
data/lib/svmkit/utils.rb DELETED
@@ -1,24 +0,0 @@
1
- module SVMKit
2
- # Module for utility methods.
3
- module Utils
4
- class << self
5
- # Dump an NMatrix object converted to a Ruby Hash.
6
- #
7
- # @param mat [NMatrix] An NMatrix object converted to a Ruby Hash.
8
- # @return [Hash] A Ruby Hash containing matrix information.
9
- def dump_nmatrix(mat)
10
- return nil if mat.class != NMatrix
11
- { shape: mat.shape, array: mat.to_flat_a, dtype: mat.dtype, stype: mat.stype }
12
- end
13
-
14
- # Return the results of converting the dumped data into an NMatrix object.
15
- #
16
- # @param dmp [Hash] A Ruby Hash about NMatrix object created with SVMKit::Utils.dump_nmatrix method.
17
- # @return [NMatrix] An NMatrix object restored from the given Hash.
18
- def restore_nmatrix(dmp = {})
19
- return nil unless dmp.class == Hash && %i[shape array dtype stype].all?(&dmp.method(:has_key?))
20
- NMatrix.new(dmp[:shape], dmp[:array], dtype: dmp[:dtype], stype: dmp[:stype])
21
- end
22
- end
23
- end
24
- end