rumale 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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: []