rumale 0.8.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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +20 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +47 -0
  6. data/.rubocop_todo.yml +58 -0
  7. data/.travis.yml +13 -0
  8. data/CHANGELOG.md +2 -0
  9. data/CODE_OF_CONDUCT.md +74 -0
  10. data/Gemfile +4 -0
  11. data/LICENSE.txt +23 -0
  12. data/README.md +175 -0
  13. data/Rakefile +6 -0
  14. data/bin/console +14 -0
  15. data/bin/setup +8 -0
  16. data/lib/rumale.rb +70 -0
  17. data/lib/rumale/base/base_estimator.rb +13 -0
  18. data/lib/rumale/base/classifier.rb +36 -0
  19. data/lib/rumale/base/cluster_analyzer.rb +31 -0
  20. data/lib/rumale/base/evaluator.rb +17 -0
  21. data/lib/rumale/base/regressor.rb +36 -0
  22. data/lib/rumale/base/splitter.rb +21 -0
  23. data/lib/rumale/base/transformer.rb +22 -0
  24. data/lib/rumale/clustering/dbscan.rb +125 -0
  25. data/lib/rumale/clustering/k_means.rb +138 -0
  26. data/lib/rumale/dataset.rb +110 -0
  27. data/lib/rumale/decomposition/nmf.rb +141 -0
  28. data/lib/rumale/decomposition/pca.rb +148 -0
  29. data/lib/rumale/ensemble/ada_boost_classifier.rb +196 -0
  30. data/lib/rumale/ensemble/ada_boost_regressor.rb +178 -0
  31. data/lib/rumale/ensemble/random_forest_classifier.rb +180 -0
  32. data/lib/rumale/ensemble/random_forest_regressor.rb +141 -0
  33. data/lib/rumale/evaluation_measure/accuracy.rb +29 -0
  34. data/lib/rumale/evaluation_measure/f_score.rb +50 -0
  35. data/lib/rumale/evaluation_measure/log_loss.rb +45 -0
  36. data/lib/rumale/evaluation_measure/mean_absolute_error.rb +29 -0
  37. data/lib/rumale/evaluation_measure/mean_squared_error.rb +29 -0
  38. data/lib/rumale/evaluation_measure/normalized_mutual_information.rb +62 -0
  39. data/lib/rumale/evaluation_measure/precision.rb +50 -0
  40. data/lib/rumale/evaluation_measure/precision_recall.rb +91 -0
  41. data/lib/rumale/evaluation_measure/purity.rb +40 -0
  42. data/lib/rumale/evaluation_measure/r2_score.rb +43 -0
  43. data/lib/rumale/evaluation_measure/recall.rb +50 -0
  44. data/lib/rumale/kernel_approximation/rbf.rb +121 -0
  45. data/lib/rumale/kernel_machine/kernel_svc.rb +193 -0
  46. data/lib/rumale/linear_model/base_linear_model.rb +89 -0
  47. data/lib/rumale/linear_model/lasso.rb +136 -0
  48. data/lib/rumale/linear_model/linear_regression.rb +110 -0
  49. data/lib/rumale/linear_model/logistic_regression.rb +159 -0
  50. data/lib/rumale/linear_model/ridge.rb +110 -0
  51. data/lib/rumale/linear_model/svc.rb +183 -0
  52. data/lib/rumale/linear_model/svr.rb +122 -0
  53. data/lib/rumale/model_selection/cross_validation.rb +123 -0
  54. data/lib/rumale/model_selection/grid_search_cv.rb +247 -0
  55. data/lib/rumale/model_selection/k_fold.rb +76 -0
  56. data/lib/rumale/model_selection/stratified_k_fold.rb +94 -0
  57. data/lib/rumale/multiclass/one_vs_rest_classifier.rb +100 -0
  58. data/lib/rumale/naive_bayes/naive_bayes.rb +315 -0
  59. data/lib/rumale/nearest_neighbors/k_neighbors_classifier.rb +111 -0
  60. data/lib/rumale/nearest_neighbors/k_neighbors_regressor.rb +93 -0
  61. data/lib/rumale/optimizer/nadam.rb +90 -0
  62. data/lib/rumale/optimizer/rmsprop.rb +69 -0
  63. data/lib/rumale/optimizer/sgd.rb +65 -0
  64. data/lib/rumale/optimizer/yellow_fin.rb +144 -0
  65. data/lib/rumale/pairwise_metric.rb +91 -0
  66. data/lib/rumale/pipeline/pipeline.rb +197 -0
  67. data/lib/rumale/polynomial_model/base_factorization_machine.rb +99 -0
  68. data/lib/rumale/polynomial_model/factorization_machine_classifier.rb +197 -0
  69. data/lib/rumale/polynomial_model/factorization_machine_regressor.rb +131 -0
  70. data/lib/rumale/preprocessing/l2_normalizer.rb +62 -0
  71. data/lib/rumale/preprocessing/label_encoder.rb +94 -0
  72. data/lib/rumale/preprocessing/min_max_scaler.rb +92 -0
  73. data/lib/rumale/preprocessing/one_hot_encoder.rb +98 -0
  74. data/lib/rumale/preprocessing/standard_scaler.rb +86 -0
  75. data/lib/rumale/probabilistic_output.rb +112 -0
  76. data/lib/rumale/tree/base_decision_tree.rb +153 -0
  77. data/lib/rumale/tree/decision_tree_classifier.rb +163 -0
  78. data/lib/rumale/tree/decision_tree_regressor.rb +135 -0
  79. data/lib/rumale/tree/node.rb +70 -0
  80. data/lib/rumale/utils.rb +37 -0
  81. data/lib/rumale/validation.rb +79 -0
  82. data/lib/rumale/values.rb +13 -0
  83. data/lib/rumale/version.rb +6 -0
  84. data/rumale.gemspec +41 -0
  85. metadata +204 -0
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rumale/tree/base_decision_tree'
4
+ require 'rumale/base/regressor'
5
+
6
+ module Rumale
7
+ module Tree
8
+ # DecisionTreeRegressor is a class that implements decision tree for regression.
9
+ #
10
+ # @example
11
+ # estimator =
12
+ # Rumale::Tree::DecisionTreeRegressor.new(
13
+ # max_depth: 3, max_leaf_nodes: 10, min_samples_leaf: 5, random_seed: 1)
14
+ # estimator.fit(training_samples, traininig_values)
15
+ # results = estimator.predict(testing_samples)
16
+ #
17
+ class DecisionTreeRegressor < BaseDecisionTree
18
+ include Base::Regressor
19
+
20
+ # Return the importance for each feature.
21
+ # @return [Numo::DFloat] (size: n_features)
22
+ attr_reader :feature_importances
23
+
24
+ # Return the learned tree.
25
+ # @return [Node]
26
+ attr_reader :tree
27
+
28
+ # Return the random generator for random selection of feature index.
29
+ # @return [Random]
30
+ attr_reader :rng
31
+
32
+ # Return the values assigned each leaf.
33
+ # @return [Numo::DFloat] (shape: [n_leafs, n_outputs])
34
+ attr_reader :leaf_values
35
+
36
+ # Create a new regressor with decision tree algorithm.
37
+ #
38
+ # @param criterion [String] The function to evalue spliting point. Supported criteria are 'mae' and 'mse'.
39
+ # @param max_depth [Integer] The maximum depth of the tree.
40
+ # If nil is given, decision tree grows without concern for depth.
41
+ # @param max_leaf_nodes [Integer] The maximum number of leaves on decision tree.
42
+ # If nil is given, number of leaves is not limited.
43
+ # @param min_samples_leaf [Integer] The minimum number of samples at a leaf node.
44
+ # @param max_features [Integer] The number of features to consider when searching optimal split point.
45
+ # If nil is given, split process considers all features.
46
+ # @param random_seed [Integer] The seed value using to initialize the random generator.
47
+ # It is used to randomly determine the order of features when deciding spliting point.
48
+ def initialize(criterion: 'mse', max_depth: nil, max_leaf_nodes: nil, min_samples_leaf: 1, max_features: nil,
49
+ random_seed: nil)
50
+ check_params_type_or_nil(Integer, max_depth: max_depth, max_leaf_nodes: max_leaf_nodes,
51
+ max_features: max_features, random_seed: random_seed)
52
+ check_params_integer(min_samples_leaf: min_samples_leaf)
53
+ check_params_string(criterion: criterion)
54
+ check_params_positive(max_depth: max_depth, max_leaf_nodes: max_leaf_nodes,
55
+ min_samples_leaf: min_samples_leaf, max_features: max_features)
56
+ super
57
+ @leaf_values = nil
58
+ end
59
+
60
+ # Fit the model with given training data.
61
+ #
62
+ # @param x [Numo::DFloat] (shape: [n_samples, n_features]) The training data to be used for fitting the model.
63
+ # @param y [Numo::DFloat] (shape: [n_samples, n_outputs]) The taget values to be used for fitting the model.
64
+ # @return [DecisionTreeRegressor] The learned regressor itself.
65
+ def fit(x, y)
66
+ check_sample_array(x)
67
+ check_tvalue_array(y)
68
+ check_sample_tvalue_size(x, y)
69
+ n_samples, n_features = x.shape
70
+ @params[:max_features] = n_features if @params[:max_features].nil?
71
+ @params[:max_features] = [@params[:max_features], n_features].min
72
+ @n_leaves = 0
73
+ @leaf_values = []
74
+ build_tree(x, y)
75
+ eval_importance(n_samples, n_features)
76
+ @leaf_values = Numo::DFloat.cast(@leaf_values)
77
+ @leaf_values = @leaf_values.flatten.dup if @leaf_values.shape[1] == 1
78
+ self
79
+ end
80
+
81
+ # Predict values for samples.
82
+ #
83
+ # @param x [Numo::DFloat] (shape: [n_samples, n_features]) The samples to predict the values.
84
+ # @return [Numo::DFloat] (shape: [n_samples, n_outputs]) Predicted values per sample.
85
+ def predict(x)
86
+ check_sample_array(x)
87
+ @leaf_values.shape[1].nil? ? @leaf_values[apply(x)] : @leaf_values[apply(x), true]
88
+ end
89
+
90
+ # Dump marshal data.
91
+ # @return [Hash] The marshal data about DecisionTreeRegressor
92
+ def marshal_dump
93
+ { params: @params,
94
+ tree: @tree,
95
+ feature_importances: @feature_importances,
96
+ leaf_values: @leaf_values,
97
+ rng: @rng }
98
+ end
99
+
100
+ # Load marshal data.
101
+ # @return [nil]
102
+ def marshal_load(obj)
103
+ @params = obj[:params]
104
+ @tree = obj[:tree]
105
+ @feature_importances = obj[:feature_importances]
106
+ @leaf_values = obj[:leaf_values]
107
+ @rng = obj[:rng]
108
+ nil
109
+ end
110
+
111
+ private
112
+
113
+ def stop_growing?(y)
114
+ (y - y.mean(0)).sum.abs.zero?
115
+ end
116
+
117
+ def put_leaf(node, y)
118
+ node.probs = nil
119
+ node.leaf = true
120
+ node.leaf_id = @n_leaves
121
+ @n_leaves += 1
122
+ @leaf_values.push(y.mean(0))
123
+ node
124
+ end
125
+
126
+ def impurity(values)
127
+ if @params[:criterion] == 'mae'
128
+ (values - values.mean(0)).abs.mean
129
+ else
130
+ ((values - values.mean(0))**2).mean
131
+ end
132
+ end
133
+ end
134
+ end
135
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rumale
4
+ module Tree
5
+ # Node is a class that implements node used for construction of decision tree.
6
+ # This class is used for internal data structures.
7
+ class Node
8
+ # @!visibility private
9
+ attr_accessor :depth, :impurity, :n_samples, :probs, :leaf, :leaf_id, :left, :right, :feature_id, :threshold
10
+
11
+ # Create a new node for decision tree.
12
+ #
13
+ # @param depth [Integer] The depth of the node in tree.
14
+ # @param impurity [Float] The impurity of the node.
15
+ # @param n_samples [Integer] The number of the samples in the node.
16
+ # @param probs [Float] The probability of the node.
17
+ # @param leaf [Boolean] The flag indicating whether the node is a leaf.
18
+ # @param leaf_id [Integer] The leaf index of the node.
19
+ # @param left [Node] The left node.
20
+ # @param right [Node] The right node.
21
+ # @param feature_id [Integer] The feature index used for evaluation.
22
+ # @param threshold [Float] The threshold value of the feature for splitting the node.
23
+ def initialize(depth: 0, impurity: 0.0, n_samples: 0, probs: 0.0,
24
+ leaf: true, leaf_id: 0,
25
+ left: nil, right: nil, feature_id: 0, threshold: 0.0)
26
+ @depth = depth
27
+ @impurity = impurity
28
+ @n_samples = n_samples
29
+ @probs = probs
30
+ @leaf = leaf
31
+ @leaf_id = leaf_id
32
+ @left = left
33
+ @right = right
34
+ @feature_id = feature_id
35
+ @threshold = threshold
36
+ end
37
+
38
+ # Dump marshal data.
39
+ # @return [Hash] The marshal data about Node
40
+ def marshal_dump
41
+ { depth: @depth,
42
+ impurity: @impurity,
43
+ n_samples: @n_samples,
44
+ probs: @probs,
45
+ leaf: @leaf,
46
+ leaf_id: @leaf_id,
47
+ left: @left,
48
+ right: @right,
49
+ feature_id: @feature_id,
50
+ threshold: @threshold }
51
+ end
52
+
53
+ # Load marshal data.
54
+ # @return [nil]
55
+ def marshal_load(obj)
56
+ @depth = obj[:depth]
57
+ @impurity = obj[:impurity]
58
+ @n_samples = obj[:n_samples]
59
+ @probs = obj[:probs]
60
+ @leaf = obj[:leaf]
61
+ @leaf_id = obj[:leaf_id]
62
+ @left = obj[:left]
63
+ @right = obj[:right]
64
+ @feature_id = obj[:feature_id]
65
+ @threshold = obj[:threshold]
66
+ nil
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rumale
4
+ # @!visibility private
5
+ module Utils
6
+ module_function
7
+
8
+ # @!visibility private
9
+ def choice_ids(size, probs, rng = nil)
10
+ rng ||= Random.new
11
+ Array.new(size) do
12
+ target = rng.rand
13
+ chosen = 0
14
+ probs.each_with_index do |p, idx|
15
+ break (chosen = idx) if target <= p
16
+ target -= p
17
+ end
18
+ chosen
19
+ end
20
+ end
21
+
22
+ # @!visibility private
23
+ def rand_uniform(shape, rng = nil)
24
+ rng ||= Random.new
25
+ rnd_vals = Array.new(shape.inject(:*)) { rng.rand }
26
+ Numo::DFloat.asarray(rnd_vals).reshape(shape[0], shape[1])
27
+ end
28
+
29
+ # @!visibility private
30
+ def rand_normal(shape, rng = nil, mu = 0.0, sigma = 1.0)
31
+ rng ||= Random.new
32
+ a = rand_uniform(shape, rng)
33
+ b = rand_uniform(shape, rng)
34
+ (Numo::NMath.sqrt(Numo::NMath.log(a) * -2.0) * Numo::NMath.sin(b * 2.0 * Math::PI)) * sigma + mu
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rumale
4
+ # @!visibility private
5
+ module Validation
6
+ module_function
7
+
8
+ # @!visibility private
9
+ def check_sample_array(x)
10
+ raise TypeError, 'Expect class of sample matrix to be Numo::DFloat' unless x.is_a?(Numo::DFloat)
11
+ raise ArgumentError, 'Expect sample matrix to be 2-D array' unless x.shape.size == 2
12
+ nil
13
+ end
14
+
15
+ # @!visibility private
16
+ def check_label_array(y)
17
+ raise TypeError, 'Expect class of label vector to be Numo::Int32' unless y.is_a?(Numo::Int32)
18
+ raise ArgumentError, 'Expect label vector to be 1-D arrray' unless y.shape.size == 1
19
+ nil
20
+ end
21
+
22
+ # @!visibility private
23
+ def check_tvalue_array(y)
24
+ raise TypeError, 'Expect class of target value vector to be Numo::DFloat' unless y.is_a?(Numo::DFloat)
25
+ nil
26
+ end
27
+
28
+ # @!visibility private
29
+ def check_sample_label_size(x, y)
30
+ raise ArgumentError, 'Expect to have the same number of samples for sample matrix and label vector' unless x.shape[0] == y.shape[0]
31
+ nil
32
+ end
33
+
34
+ # @!visibility private
35
+ def check_sample_tvalue_size(x, y)
36
+ raise ArgumentError, 'Expect to have the same number of samples for sample matrix and target value vector' unless x.shape[0] == y.shape[0]
37
+ nil
38
+ end
39
+
40
+ # @!visibility private
41
+ def check_params_type(type, params = {})
42
+ params.each { |k, v| raise TypeError, "Expect class of #{k} to be #{type}" unless v.is_a?(type) }
43
+ nil
44
+ end
45
+
46
+ # @!visibility private
47
+ def check_params_type_or_nil(type, params = {})
48
+ params.each { |k, v| raise TypeError, "Expect class of #{k} to be #{type} or nil" unless v.is_a?(type) || v.is_a?(NilClass) }
49
+ nil
50
+ end
51
+
52
+ # @!visibility private
53
+ def check_params_float(params = {})
54
+ check_params_type(Float, params)
55
+ end
56
+
57
+ # @!visibility private
58
+ def check_params_integer(params = {})
59
+ check_params_type(Integer, params)
60
+ end
61
+
62
+ # @!visibility private
63
+ def check_params_string(params = {})
64
+ check_params_type(String, params)
65
+ end
66
+
67
+ # @!visibility private
68
+ def check_params_boolean(params = {})
69
+ params.each { |k, v| raise TypeError, "Expect class of #{k} to be Boolean" unless v.is_a?(FalseClass) || v.is_a?(TrueClass) }
70
+ nil
71
+ end
72
+
73
+ # @!visibility private
74
+ def check_params_positive(params = {})
75
+ params.reject { |_, v| v.nil? }.each { |k, v| raise ArgumentError, "Expect #{k} to be positive value" if v.negative? }
76
+ nil
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rumale
4
+ # @!visibility private
5
+ module Values
6
+ module_function
7
+
8
+ # @!visibility private
9
+ def int_max
10
+ @int_max ||= 2**([42].pack('i').size * 16 - 2) - 1
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Rumale is a machine learning library in Ruby.
4
+ module Rumale
5
+ VERSION = '0.8.0'
6
+ end
@@ -0,0 +1,41 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'rumale/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'rumale'
7
+ spec.version = Rumale::VERSION
8
+ spec.authors = ['yoshoku']
9
+ spec.email = ['yoshoku@outlook.com']
10
+
11
+ spec.summary = <<MSG
12
+ Rumale is a machine learninig library in Ruby.
13
+ Rumale provides machine learning algorithms with interfaces similar to Scikit-Learn in Python.
14
+ MSG
15
+ spec.description = <<MSG
16
+ Rumale is a machine learninig library in Ruby.
17
+ Rumale provides machine learning algorithms with interfaces similar to Scikit-Learn in Python.
18
+ Rumale currently supports Linear / Kernel Support Vector Machine,
19
+ Logistic Regression, Linear Regression, Ridge, Lasso, Factorization Machine,
20
+ Naive Bayes, Decision Tree, AdaBoost, Random Forest, K-nearest neighbor algorithm,
21
+ K-Means, DBSCAN, Principal Component Analysis, and Non-negative Matrix Factorization.
22
+ MSG
23
+ spec.homepage = 'https://github.com/yoshoku/Rumale'
24
+ spec.license = 'BSD-2-Clause'
25
+
26
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
+ f.match(%r{^(test|spec|features)/})
28
+ end
29
+ spec.bindir = 'exe'
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ['lib']
32
+
33
+ spec.required_ruby_version = '>= 2.3'
34
+
35
+ spec.add_runtime_dependency 'numo-narray', '>= 0.9.1'
36
+
37
+ spec.add_development_dependency 'bundler', '>= 1.16'
38
+ spec.add_development_dependency 'coveralls', '~> 0.8'
39
+ spec.add_development_dependency 'rake', '~> 12.0'
40
+ spec.add_development_dependency 'rspec', '~> 3.0'
41
+ end
metadata ADDED
@@ -0,0 +1,204 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rumale
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ platform: ruby
6
+ authors:
7
+ - yoshoku
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-03-01 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: '1.16'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '1.16'
41
+ - !ruby/object:Gem::Dependency
42
+ name: coveralls
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.8'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '12.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '12.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
+ Rumale is a machine learninig library in Ruby.
85
+ Rumale provides machine learning algorithms with interfaces similar to Scikit-Learn in Python.
86
+ Rumale currently supports Linear / Kernel Support Vector Machine,
87
+ Logistic Regression, Linear Regression, Ridge, Lasso, Factorization Machine,
88
+ Naive Bayes, Decision Tree, AdaBoost, Random Forest, K-nearest neighbor algorithm,
89
+ K-Means, DBSCAN, Principal Component Analysis, and Non-negative Matrix Factorization.
90
+ email:
91
+ - yoshoku@outlook.com
92
+ executables: []
93
+ extensions: []
94
+ extra_rdoc_files: []
95
+ files:
96
+ - ".coveralls.yml"
97
+ - ".gitignore"
98
+ - ".rspec"
99
+ - ".rubocop.yml"
100
+ - ".rubocop_todo.yml"
101
+ - ".travis.yml"
102
+ - CHANGELOG.md
103
+ - CODE_OF_CONDUCT.md
104
+ - Gemfile
105
+ - LICENSE.txt
106
+ - README.md
107
+ - Rakefile
108
+ - bin/console
109
+ - bin/setup
110
+ - lib/rumale.rb
111
+ - lib/rumale/base/base_estimator.rb
112
+ - lib/rumale/base/classifier.rb
113
+ - lib/rumale/base/cluster_analyzer.rb
114
+ - lib/rumale/base/evaluator.rb
115
+ - lib/rumale/base/regressor.rb
116
+ - lib/rumale/base/splitter.rb
117
+ - lib/rumale/base/transformer.rb
118
+ - lib/rumale/clustering/dbscan.rb
119
+ - lib/rumale/clustering/k_means.rb
120
+ - lib/rumale/dataset.rb
121
+ - lib/rumale/decomposition/nmf.rb
122
+ - lib/rumale/decomposition/pca.rb
123
+ - lib/rumale/ensemble/ada_boost_classifier.rb
124
+ - lib/rumale/ensemble/ada_boost_regressor.rb
125
+ - lib/rumale/ensemble/random_forest_classifier.rb
126
+ - lib/rumale/ensemble/random_forest_regressor.rb
127
+ - lib/rumale/evaluation_measure/accuracy.rb
128
+ - lib/rumale/evaluation_measure/f_score.rb
129
+ - lib/rumale/evaluation_measure/log_loss.rb
130
+ - lib/rumale/evaluation_measure/mean_absolute_error.rb
131
+ - lib/rumale/evaluation_measure/mean_squared_error.rb
132
+ - lib/rumale/evaluation_measure/normalized_mutual_information.rb
133
+ - lib/rumale/evaluation_measure/precision.rb
134
+ - lib/rumale/evaluation_measure/precision_recall.rb
135
+ - lib/rumale/evaluation_measure/purity.rb
136
+ - lib/rumale/evaluation_measure/r2_score.rb
137
+ - lib/rumale/evaluation_measure/recall.rb
138
+ - lib/rumale/kernel_approximation/rbf.rb
139
+ - lib/rumale/kernel_machine/kernel_svc.rb
140
+ - lib/rumale/linear_model/base_linear_model.rb
141
+ - lib/rumale/linear_model/lasso.rb
142
+ - lib/rumale/linear_model/linear_regression.rb
143
+ - lib/rumale/linear_model/logistic_regression.rb
144
+ - lib/rumale/linear_model/ridge.rb
145
+ - lib/rumale/linear_model/svc.rb
146
+ - lib/rumale/linear_model/svr.rb
147
+ - lib/rumale/model_selection/cross_validation.rb
148
+ - lib/rumale/model_selection/grid_search_cv.rb
149
+ - lib/rumale/model_selection/k_fold.rb
150
+ - lib/rumale/model_selection/stratified_k_fold.rb
151
+ - lib/rumale/multiclass/one_vs_rest_classifier.rb
152
+ - lib/rumale/naive_bayes/naive_bayes.rb
153
+ - lib/rumale/nearest_neighbors/k_neighbors_classifier.rb
154
+ - lib/rumale/nearest_neighbors/k_neighbors_regressor.rb
155
+ - lib/rumale/optimizer/nadam.rb
156
+ - lib/rumale/optimizer/rmsprop.rb
157
+ - lib/rumale/optimizer/sgd.rb
158
+ - lib/rumale/optimizer/yellow_fin.rb
159
+ - lib/rumale/pairwise_metric.rb
160
+ - lib/rumale/pipeline/pipeline.rb
161
+ - lib/rumale/polynomial_model/base_factorization_machine.rb
162
+ - lib/rumale/polynomial_model/factorization_machine_classifier.rb
163
+ - lib/rumale/polynomial_model/factorization_machine_regressor.rb
164
+ - lib/rumale/preprocessing/l2_normalizer.rb
165
+ - lib/rumale/preprocessing/label_encoder.rb
166
+ - lib/rumale/preprocessing/min_max_scaler.rb
167
+ - lib/rumale/preprocessing/one_hot_encoder.rb
168
+ - lib/rumale/preprocessing/standard_scaler.rb
169
+ - lib/rumale/probabilistic_output.rb
170
+ - lib/rumale/tree/base_decision_tree.rb
171
+ - lib/rumale/tree/decision_tree_classifier.rb
172
+ - lib/rumale/tree/decision_tree_regressor.rb
173
+ - lib/rumale/tree/node.rb
174
+ - lib/rumale/utils.rb
175
+ - lib/rumale/validation.rb
176
+ - lib/rumale/values.rb
177
+ - lib/rumale/version.rb
178
+ - rumale.gemspec
179
+ homepage: https://github.com/yoshoku/Rumale
180
+ licenses:
181
+ - BSD-2-Clause
182
+ metadata: {}
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '2.3'
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements: []
198
+ rubyforge_project:
199
+ rubygems_version: 2.5.2.3
200
+ signing_key:
201
+ specification_version: 4
202
+ summary: Rumale is a machine learninig library in Ruby. Rumale provides machine learning
203
+ algorithms with interfaces similar to Scikit-Learn in Python.
204
+ test_files: []