rumale 0.22.5 → 0.23.2

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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +34 -2
  5. data/ext/rumale/extconf.rb +1 -1
  6. data/ext/rumale/{tree.c → rumaleext.c} +51 -85
  7. data/ext/rumale/{tree.h → rumaleext.h} +5 -5
  8. data/lib/rumale/clustering/hdbscan.rb +28 -8
  9. data/lib/rumale/clustering/single_linkage.rb +23 -5
  10. data/lib/rumale/decomposition/fast_ica.rb +1 -1
  11. data/lib/rumale/ensemble/gradient_boosting_classifier.rb +2 -2
  12. data/lib/rumale/ensemble/gradient_boosting_regressor.rb +1 -1
  13. data/lib/rumale/ensemble/random_forest_classifier.rb +1 -1
  14. data/lib/rumale/ensemble/random_forest_regressor.rb +1 -1
  15. data/lib/rumale/evaluation_measure/roc_auc.rb +1 -2
  16. data/lib/rumale/kernel_approximation/nystroem.rb +1 -1
  17. data/lib/rumale/kernel_machine/kernel_svc.rb +1 -1
  18. data/lib/rumale/linear_model/linear_regression.rb +5 -3
  19. data/lib/rumale/linear_model/ridge.rb +3 -3
  20. data/lib/rumale/model_selection/grid_search_cv.rb +3 -3
  21. data/lib/rumale/naive_bayes/bernoulli_nb.rb +1 -1
  22. data/lib/rumale/naive_bayes/gaussian_nb.rb +1 -1
  23. data/lib/rumale/naive_bayes/multinomial_nb.rb +1 -1
  24. data/lib/rumale/nearest_neighbors/vp_tree.rb +2 -0
  25. data/lib/rumale/tree/base_decision_tree.rb +15 -10
  26. data/lib/rumale/tree/decision_tree_classifier.rb +14 -11
  27. data/lib/rumale/tree/decision_tree_regressor.rb +0 -1
  28. data/lib/rumale/tree/gradient_tree_regressor.rb +15 -11
  29. data/lib/rumale/version.rb +1 -1
  30. data/lib/rumale.rb +132 -133
  31. metadata +6 -17
  32. data/.coveralls.yml +0 -1
  33. data/.github/workflows/build.yml +0 -26
  34. data/.github/workflows/coverage.yml +0 -28
  35. data/.gitignore +0 -23
  36. data/.rspec +0 -3
  37. data/.rubocop.yml +0 -93
  38. data/.travis.yml +0 -17
  39. data/Gemfile +0 -17
  40. data/Rakefile +0 -14
  41. data/ext/rumale/rumale.c +0 -10
  42. data/ext/rumale/rumale.h +0 -8
  43. data/rumale.gemspec +0 -49
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'lbfgsb'
4
+
3
5
  require 'rumale/linear_model/base_sgd'
4
6
  require 'rumale/base/regressor'
5
7
 
@@ -58,7 +60,7 @@ module Rumale
58
60
  # @param tol [Float] The tolerance of loss for terminating optimization.
59
61
  # If solver is 'svd', this parameter is ignored.
60
62
  # @param solver [String] The algorithm to calculate weights. ('auto', 'sgd', 'svd' or 'lbfgs').
61
- # 'auto' chooses the 'svd' solver if Numo::Linalg is loaded. Otherwise, it chooses the 'sgd' solver.
63
+ # 'auto' chooses the 'svd' solver if Numo::Linalg is loaded. Otherwise, it chooses the 'lbfgs' solver.
62
64
  # 'sgd' uses the stochastic gradient descent optimization.
63
65
  # 'svd' performs singular value decomposition of samples.
64
66
  # 'lbfgs' uses the L-BFGS method for optimization.
@@ -82,9 +84,9 @@ module Rumale
82
84
  super()
83
85
  @params.merge!(method(:initialize).parameters.map { |_t, arg| [arg, binding.local_variable_get(arg)] }.to_h)
84
86
  @params[:solver] = if solver == 'auto'
85
- enable_linalg?(warning: false) ? 'svd' : 'sgd'
87
+ enable_linalg?(warning: false) ? 'svd' : 'lbfgs'
86
88
  else
87
- solver.match?(/^svd$|^sgd$|^lbfgs$/) ? solver : 'sgd'
89
+ solver.match?(/^svd$|^sgd$|^lbfgs$/) ? solver : 'lbfgs'
88
90
  end
89
91
  @params[:decay] ||= @params[:learning_rate]
90
92
  @params[:random_seed] ||= srand
@@ -61,7 +61,7 @@ module Rumale
61
61
  # @param tol [Float] The tolerance of loss for terminating optimization.
62
62
  # If solver is 'svd', this parameter is ignored.
63
63
  # @param solver [String] The algorithm to calculate weights. ('auto', 'sgd', 'svd', or 'lbfgs').
64
- # 'auto' chooses the 'svd' solver if Numo::Linalg is loaded. Otherwise, it chooses the 'sgd' solver.
64
+ # 'auto' chooses the 'svd' solver if Numo::Linalg is loaded. Otherwise, it chooses the 'lbfgs' solver.
65
65
  # 'sgd' uses the stochastic gradient descent optimization.
66
66
  # 'svd' performs singular value decomposition of samples.
67
67
  # 'lbfgs' uses the L-BFGS method for optimization.
@@ -87,9 +87,9 @@ module Rumale
87
87
  super()
88
88
  @params.merge!(method(:initialize).parameters.map { |_t, arg| [arg, binding.local_variable_get(arg)] }.to_h)
89
89
  @params[:solver] = if solver == 'auto'
90
- enable_linalg?(warning: false) ? 'svd' : 'sgd'
90
+ enable_linalg?(warning: false) ? 'svd' : 'lbfgs'
91
91
  else
92
- solver.match?(/^svd$|^sgd$|^lbfgs$/) ? solver : 'sgd'
92
+ solver.match?(/^svd$|^sgd$|^lbfgs$/) ? solver : 'lbfgs'
93
93
  end
94
94
  @params[:decay] ||= @params[:reg_param] * @params[:learning_rate]
95
95
  @params[:random_seed] ||= srand
@@ -160,15 +160,15 @@ module Rumale
160
160
  grid = [grid] if grid.is_a?(Hash)
161
161
  grid.each do |h|
162
162
  raise TypeError, 'Expect class of elements in param_grid to be Hash' unless h.is_a?(Hash)
163
- raise TypeError, 'Expect class of parameter values in param_grid to be Array' unless h.values.all? { |v| v.is_a?(Array) }
163
+ raise TypeError, 'Expect class of parameter values in param_grid to be Array' unless h.values.all?(Array)
164
164
  end
165
165
  grid
166
166
  end
167
167
 
168
168
  def param_combinations
169
169
  @param_combinations ||= @params[:param_grid].map do |prm|
170
- x = Hash[prm.sort].map { |k, v| [k].product(v) }
171
- x[0].product(*x[1...x.size]).map { |v| Hash[v] }
170
+ x = prm.sort.to_h.map { |k, v| [k].product(v) }
171
+ x[0].product(*x[1...x.size]).map(&:to_h)
172
172
  end
173
173
  end
174
174
 
@@ -75,7 +75,7 @@ module Rumale
75
75
  (Numo::DFloat[*bin_x] * Numo::NMath.log(@feature_probs[l, true])).sum(1)
76
76
  (Numo::DFloat[*not_bin_x] * Numo::NMath.log(1.0 - @feature_probs[l, true])).sum(1))
77
77
  end
78
- Numo::DFloat[*log_likelihoods].transpose
78
+ Numo::DFloat[*log_likelihoods].transpose.dup
79
79
  end
80
80
  end
81
81
  end
@@ -62,7 +62,7 @@ module Rumale
62
62
  Numo::NMath.log(2.0 * Math::PI * @variances[l, true]) +
63
63
  ((x - @means[l, true])**2 / @variances[l, true])).sum(1)
64
64
  end
65
- Numo::DFloat[*log_likelihoods].transpose
65
+ Numo::DFloat[*log_likelihoods].transpose.dup
66
66
  end
67
67
  end
68
68
  end
@@ -67,7 +67,7 @@ module Rumale
67
67
  log_likelihoods = Array.new(n_classes) do |l|
68
68
  Math.log(@class_priors[l]) + (Numo::DFloat[*bin_x] * Numo::NMath.log(@feature_probs[l, true])).sum(1)
69
69
  end
70
- Numo::DFloat[*log_likelihoods].transpose
70
+ Numo::DFloat[*log_likelihoods].transpose.dup
71
71
  end
72
72
  end
73
73
  end
@@ -10,6 +10,8 @@ module Rumale
10
10
  # This implementation, unlike the paper, does not perform random sampling with vantage point selection.
11
11
  # This class is used internally for k-nearest neighbor estimators.
12
12
  #
13
+ # @deprecated This class will be removed in ver. 0.24.0. The author recommends to use the annoy-rb gem instead.
14
+ #
13
15
  # *Reference*
14
16
  # - Yianilos, P N., "Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces," Proc. SODA'93, pp. 311--321, 1993.
15
17
  class VPTree
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'rumale/base/base_estimator'
4
4
  require 'rumale/tree/node'
5
+ require 'rumale/rumaleext'
5
6
 
6
7
  module Rumale
7
8
  # This module consists of the classes that implement tree models.
@@ -44,21 +45,25 @@ module Rumale
44
45
  # @return [Numo::Int32] (shape: [n_samples]) Leaf index for sample.
45
46
  def apply(x)
46
47
  x = check_convert_sample_array(x)
47
- Numo::Int32[*(Array.new(x.shape[0]) { |n| apply_at_node(@tree, x[n, true]) })]
48
+ Numo::Int32[*(Array.new(x.shape[0]) { |n| partial_apply(@tree, x[n, true]) })]
48
49
  end
49
50
 
50
51
  private
51
52
 
52
- def apply_at_node(node, sample)
53
- return node.leaf_id if node.leaf
54
- return apply_at_node(node.left, sample) if node.right.nil?
55
- return apply_at_node(node.right, sample) if node.left.nil?
56
-
57
- if sample[node.feature_id] <= node.threshold
58
- apply_at_node(node.left, sample)
59
- else
60
- apply_at_node(node.right, sample)
53
+ def partial_apply(tree, sample)
54
+ node = tree
55
+ until node.leaf
56
+ # :nocov:
57
+ node = if node.right.nil?
58
+ node.left
59
+ elsif node.left.nil?
60
+ node.right
61
+ # :nocov:
62
+ else
63
+ sample[node.feature_id] <= node.threshold ? node.left : node.right
64
+ end
61
65
  end
66
+ node.leaf_id
62
67
  end
63
68
 
64
69
  def build_tree(x, y)
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rumale/rumale'
4
3
  require 'rumale/tree/base_decision_tree'
5
4
  require 'rumale/base/classifier'
6
5
 
@@ -101,21 +100,25 @@ module Rumale
101
100
  # @return [Numo::DFloat] (shape: [n_samples, n_classes]) Predicted probability of each class per sample.
102
101
  def predict_proba(x)
103
102
  x = check_convert_sample_array(x)
104
- Numo::DFloat[*(Array.new(x.shape[0]) { |n| predict_proba_at_node(@tree, x[n, true]) })]
103
+ Numo::DFloat[*(Array.new(x.shape[0]) { |n| partial_predict_proba(@tree, x[n, true]) })]
105
104
  end
106
105
 
107
106
  private
108
107
 
109
- def predict_proba_at_node(node, sample)
110
- return node.probs if node.leaf
111
- return predict_proba_at_node(node.left, sample) if node.right.nil?
112
- return predict_proba_at_node(node.right, sample) if node.left.nil?
113
-
114
- if sample[node.feature_id] <= node.threshold
115
- predict_proba_at_node(node.left, sample)
116
- else
117
- predict_proba_at_node(node.right, sample)
108
+ def partial_predict_proba(tree, sample)
109
+ node = tree
110
+ until node.leaf
111
+ # :nocov:
112
+ node = if node.right.nil?
113
+ node.left
114
+ elsif node.left.nil?
115
+ node.right
116
+ # :nocov:
117
+ else
118
+ sample[node.feature_id] <= node.threshold ? node.left : node.right
119
+ end
118
120
  end
121
+ node.probs
119
122
  end
120
123
 
121
124
  def stop_growing?(y)
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rumale/rumale'
4
3
  require 'rumale/tree/base_decision_tree'
5
4
  require 'rumale/base/regressor'
6
5
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'rumale/rumale'
4
3
  require 'rumale/base/base_estimator'
5
4
  require 'rumale/base/regressor'
5
+ require 'rumale/rumaleext'
6
6
  require 'rumale/tree/node'
7
7
 
8
8
  module Rumale
@@ -114,21 +114,25 @@ module Rumale
114
114
  # @return [Numo::Int32] (shape: [n_samples]) Leaf index for sample.
115
115
  def apply(x)
116
116
  x = check_convert_sample_array(x)
117
- Numo::Int32[*(Array.new(x.shape[0]) { |n| apply_at_node(@tree, x[n, true]) })]
117
+ Numo::Int32[*(Array.new(x.shape[0]) { |n| partial_apply(@tree, x[n, true]) })]
118
118
  end
119
119
 
120
120
  private
121
121
 
122
- def apply_at_node(node, sample)
123
- return node.leaf_id if node.leaf
124
- return apply_at_node(node.left, sample) if node.right.nil?
125
- return apply_at_node(node.right, sample) if node.left.nil?
126
-
127
- if sample[node.feature_id] <= node.threshold
128
- apply_at_node(node.left, sample)
129
- else
130
- apply_at_node(node.right, sample)
122
+ def partial_apply(tree, sample)
123
+ node = tree
124
+ until node.leaf
125
+ # :nocov:
126
+ node = if node.right.nil?
127
+ node.left
128
+ elsif node.left.nil?
129
+ node.right
130
+ # :nocov:
131
+ else
132
+ sample[node.feature_id] <= node.threshold ? node.left : node.right
133
+ end
131
134
  end
135
+ node.leaf_id
132
136
  end
133
137
 
134
138
  def build_tree(x, y, g, h)
@@ -3,5 +3,5 @@
3
3
  # Rumale is a machine learning library in Ruby.
4
4
  module Rumale
5
5
  # The version of Rumale you are using.
6
- VERSION = '0.22.5'
6
+ VERSION = '0.23.2'
7
7
  end
data/lib/rumale.rb CHANGED
@@ -2,136 +2,135 @@
2
2
 
3
3
  require 'numo/narray'
4
4
 
5
- require 'rumale/rumale'
6
-
7
- require 'rumale/version'
8
- require 'rumale/validation'
9
- require 'rumale/values'
10
- require 'rumale/utils'
11
- require 'rumale/pairwise_metric'
12
- require 'rumale/dataset'
13
- require 'rumale/probabilistic_output'
14
- require 'rumale/base/base_estimator'
15
- require 'rumale/base/classifier'
16
- require 'rumale/base/regressor'
17
- require 'rumale/base/cluster_analyzer'
18
- require 'rumale/base/transformer'
19
- require 'rumale/base/splitter'
20
- require 'rumale/base/evaluator'
21
- require 'rumale/pipeline/pipeline'
22
- require 'rumale/pipeline/feature_union'
23
- require 'rumale/kernel_approximation/rbf'
24
- require 'rumale/kernel_approximation/nystroem'
25
- require 'rumale/linear_model/base_sgd'
26
- require 'rumale/linear_model/svc'
27
- require 'rumale/linear_model/svr'
28
- require 'rumale/linear_model/logistic_regression'
29
- require 'rumale/linear_model/linear_regression'
30
- require 'rumale/linear_model/ridge'
31
- require 'rumale/linear_model/lasso'
32
- require 'rumale/linear_model/elastic_net'
33
- require 'rumale/linear_model/nnls'
34
- require 'rumale/kernel_machine/kernel_svc'
35
- require 'rumale/kernel_machine/kernel_pca'
36
- require 'rumale/kernel_machine/kernel_fda'
37
- require 'rumale/kernel_machine/kernel_ridge'
38
- require 'rumale/kernel_machine/kernel_ridge_classifier'
39
- require 'rumale/multiclass/one_vs_rest_classifier'
40
- require 'rumale/nearest_neighbors/vp_tree'
41
- require 'rumale/nearest_neighbors/k_neighbors_classifier'
42
- require 'rumale/nearest_neighbors/k_neighbors_regressor'
43
- require 'rumale/naive_bayes/base_naive_bayes'
44
- require 'rumale/naive_bayes/bernoulli_nb'
45
- require 'rumale/naive_bayes/complement_nb'
46
- require 'rumale/naive_bayes/gaussian_nb'
47
- require 'rumale/naive_bayes/multinomial_nb'
48
- require 'rumale/naive_bayes/negation_nb'
49
- require 'rumale/tree/node'
50
- require 'rumale/tree/base_decision_tree'
51
- require 'rumale/tree/decision_tree_classifier'
52
- require 'rumale/tree/decision_tree_regressor'
53
- require 'rumale/tree/extra_tree_classifier'
54
- require 'rumale/tree/extra_tree_regressor'
55
- require 'rumale/tree/gradient_tree_regressor'
56
- require 'rumale/ensemble/ada_boost_classifier'
57
- require 'rumale/ensemble/ada_boost_regressor'
58
- require 'rumale/ensemble/gradient_boosting_classifier'
59
- require 'rumale/ensemble/gradient_boosting_regressor'
60
- require 'rumale/ensemble/random_forest_classifier'
61
- require 'rumale/ensemble/random_forest_regressor'
62
- require 'rumale/ensemble/extra_trees_classifier'
63
- require 'rumale/ensemble/extra_trees_regressor'
64
- require 'rumale/ensemble/stacking_classifier'
65
- require 'rumale/ensemble/stacking_regressor'
66
- require 'rumale/ensemble/voting_classifier'
67
- require 'rumale/ensemble/voting_regressor'
68
- require 'rumale/clustering/k_means'
69
- require 'rumale/clustering/mini_batch_k_means'
70
- require 'rumale/clustering/k_medoids'
71
- require 'rumale/clustering/gaussian_mixture'
72
- require 'rumale/clustering/dbscan'
73
- require 'rumale/clustering/hdbscan'
74
- require 'rumale/clustering/snn'
75
- require 'rumale/clustering/power_iteration'
76
- require 'rumale/clustering/spectral_clustering'
77
- require 'rumale/clustering/single_linkage'
78
- require 'rumale/decomposition/pca'
79
- require 'rumale/decomposition/nmf'
80
- require 'rumale/decomposition/factor_analysis'
81
- require 'rumale/decomposition/fast_ica'
82
- require 'rumale/manifold/tsne'
83
- require 'rumale/manifold/mds'
84
- require 'rumale/metric_learning/fisher_discriminant_analysis'
85
- require 'rumale/metric_learning/neighbourhood_component_analysis'
86
- require 'rumale/metric_learning/mlkr'
87
- require 'rumale/neural_network/adam'
88
- require 'rumale/neural_network/base_mlp'
89
- require 'rumale/neural_network/mlp_regressor'
90
- require 'rumale/neural_network/mlp_classifier'
91
- require 'rumale/feature_extraction/hash_vectorizer'
92
- require 'rumale/feature_extraction/feature_hasher'
93
- require 'rumale/feature_extraction/tfidf_transformer'
94
- require 'rumale/preprocessing/l2_normalizer'
95
- require 'rumale/preprocessing/l1_normalizer'
96
- require 'rumale/preprocessing/max_normalizer'
97
- require 'rumale/preprocessing/min_max_scaler'
98
- require 'rumale/preprocessing/max_abs_scaler'
99
- require 'rumale/preprocessing/standard_scaler'
100
- require 'rumale/preprocessing/bin_discretizer'
101
- require 'rumale/preprocessing/label_binarizer'
102
- require 'rumale/preprocessing/label_encoder'
103
- require 'rumale/preprocessing/one_hot_encoder'
104
- require 'rumale/preprocessing/ordinal_encoder'
105
- require 'rumale/preprocessing/binarizer'
106
- require 'rumale/preprocessing/polynomial_features'
107
- require 'rumale/preprocessing/kernel_calculator'
108
- require 'rumale/model_selection/k_fold'
109
- require 'rumale/model_selection/group_k_fold'
110
- require 'rumale/model_selection/stratified_k_fold'
111
- require 'rumale/model_selection/shuffle_split'
112
- require 'rumale/model_selection/group_shuffle_split'
113
- require 'rumale/model_selection/stratified_shuffle_split'
114
- require 'rumale/model_selection/time_series_split'
115
- require 'rumale/model_selection/cross_validation'
116
- require 'rumale/model_selection/grid_search_cv'
117
- require 'rumale/model_selection/function'
118
- require 'rumale/evaluation_measure/accuracy'
119
- require 'rumale/evaluation_measure/precision'
120
- require 'rumale/evaluation_measure/recall'
121
- require 'rumale/evaluation_measure/f_score'
122
- require 'rumale/evaluation_measure/roc_auc'
123
- require 'rumale/evaluation_measure/log_loss'
124
- require 'rumale/evaluation_measure/r2_score'
125
- require 'rumale/evaluation_measure/explained_variance_score'
126
- require 'rumale/evaluation_measure/mean_squared_error'
127
- require 'rumale/evaluation_measure/mean_squared_log_error'
128
- require 'rumale/evaluation_measure/mean_absolute_error'
129
- require 'rumale/evaluation_measure/median_absolute_error'
130
- require 'rumale/evaluation_measure/adjusted_rand_score'
131
- require 'rumale/evaluation_measure/purity'
132
- require 'rumale/evaluation_measure/mutual_information'
133
- require 'rumale/evaluation_measure/normalized_mutual_information'
134
- require 'rumale/evaluation_measure/silhouette_score'
135
- require 'rumale/evaluation_measure/davies_bouldin_score'
136
- require 'rumale/evaluation_measure/calinski_harabasz_score'
137
- require 'rumale/evaluation_measure/function'
5
+ require_relative 'rumale/version'
6
+ require_relative 'rumale/rumaleext'
7
+ require_relative 'rumale/validation'
8
+ require_relative 'rumale/values'
9
+ require_relative 'rumale/utils'
10
+ require_relative 'rumale/pairwise_metric'
11
+ require_relative 'rumale/dataset'
12
+ require_relative 'rumale/probabilistic_output'
13
+ require_relative 'rumale/base/base_estimator'
14
+ require_relative 'rumale/base/classifier'
15
+ require_relative 'rumale/base/regressor'
16
+ require_relative 'rumale/base/cluster_analyzer'
17
+ require_relative 'rumale/base/transformer'
18
+ require_relative 'rumale/base/splitter'
19
+ require_relative 'rumale/base/evaluator'
20
+ require_relative 'rumale/pipeline/pipeline'
21
+ require_relative 'rumale/pipeline/feature_union'
22
+ require_relative 'rumale/kernel_approximation/rbf'
23
+ require_relative 'rumale/kernel_approximation/nystroem'
24
+ require_relative 'rumale/linear_model/base_sgd'
25
+ require_relative 'rumale/linear_model/svc'
26
+ require_relative 'rumale/linear_model/svr'
27
+ require_relative 'rumale/linear_model/logistic_regression'
28
+ require_relative 'rumale/linear_model/linear_regression'
29
+ require_relative 'rumale/linear_model/ridge'
30
+ require_relative 'rumale/linear_model/lasso'
31
+ require_relative 'rumale/linear_model/elastic_net'
32
+ require_relative 'rumale/linear_model/nnls'
33
+ require_relative 'rumale/kernel_machine/kernel_svc'
34
+ require_relative 'rumale/kernel_machine/kernel_pca'
35
+ require_relative 'rumale/kernel_machine/kernel_fda'
36
+ require_relative 'rumale/kernel_machine/kernel_ridge'
37
+ require_relative 'rumale/kernel_machine/kernel_ridge_classifier'
38
+ require_relative 'rumale/multiclass/one_vs_rest_classifier'
39
+ require_relative 'rumale/nearest_neighbors/vp_tree'
40
+ require_relative 'rumale/nearest_neighbors/k_neighbors_classifier'
41
+ require_relative 'rumale/nearest_neighbors/k_neighbors_regressor'
42
+ require_relative 'rumale/naive_bayes/base_naive_bayes'
43
+ require_relative 'rumale/naive_bayes/bernoulli_nb'
44
+ require_relative 'rumale/naive_bayes/complement_nb'
45
+ require_relative 'rumale/naive_bayes/gaussian_nb'
46
+ require_relative 'rumale/naive_bayes/multinomial_nb'
47
+ require_relative 'rumale/naive_bayes/negation_nb'
48
+ require_relative 'rumale/tree/node'
49
+ require_relative 'rumale/tree/base_decision_tree'
50
+ require_relative 'rumale/tree/decision_tree_classifier'
51
+ require_relative 'rumale/tree/decision_tree_regressor'
52
+ require_relative 'rumale/tree/extra_tree_classifier'
53
+ require_relative 'rumale/tree/extra_tree_regressor'
54
+ require_relative 'rumale/tree/gradient_tree_regressor'
55
+ require_relative 'rumale/ensemble/ada_boost_classifier'
56
+ require_relative 'rumale/ensemble/ada_boost_regressor'
57
+ require_relative 'rumale/ensemble/gradient_boosting_classifier'
58
+ require_relative 'rumale/ensemble/gradient_boosting_regressor'
59
+ require_relative 'rumale/ensemble/random_forest_classifier'
60
+ require_relative 'rumale/ensemble/random_forest_regressor'
61
+ require_relative 'rumale/ensemble/extra_trees_classifier'
62
+ require_relative 'rumale/ensemble/extra_trees_regressor'
63
+ require_relative 'rumale/ensemble/stacking_classifier'
64
+ require_relative 'rumale/ensemble/stacking_regressor'
65
+ require_relative 'rumale/ensemble/voting_classifier'
66
+ require_relative 'rumale/ensemble/voting_regressor'
67
+ require_relative 'rumale/clustering/k_means'
68
+ require_relative 'rumale/clustering/mini_batch_k_means'
69
+ require_relative 'rumale/clustering/k_medoids'
70
+ require_relative 'rumale/clustering/gaussian_mixture'
71
+ require_relative 'rumale/clustering/dbscan'
72
+ require_relative 'rumale/clustering/hdbscan'
73
+ require_relative 'rumale/clustering/snn'
74
+ require_relative 'rumale/clustering/power_iteration'
75
+ require_relative 'rumale/clustering/spectral_clustering'
76
+ require_relative 'rumale/clustering/single_linkage'
77
+ require_relative 'rumale/decomposition/pca'
78
+ require_relative 'rumale/decomposition/nmf'
79
+ require_relative 'rumale/decomposition/factor_analysis'
80
+ require_relative 'rumale/decomposition/fast_ica'
81
+ require_relative 'rumale/manifold/tsne'
82
+ require_relative 'rumale/manifold/mds'
83
+ require_relative 'rumale/metric_learning/fisher_discriminant_analysis'
84
+ require_relative 'rumale/metric_learning/neighbourhood_component_analysis'
85
+ require_relative 'rumale/metric_learning/mlkr'
86
+ require_relative 'rumale/neural_network/adam'
87
+ require_relative 'rumale/neural_network/base_mlp'
88
+ require_relative 'rumale/neural_network/mlp_regressor'
89
+ require_relative 'rumale/neural_network/mlp_classifier'
90
+ require_relative 'rumale/feature_extraction/hash_vectorizer'
91
+ require_relative 'rumale/feature_extraction/feature_hasher'
92
+ require_relative 'rumale/feature_extraction/tfidf_transformer'
93
+ require_relative 'rumale/preprocessing/l2_normalizer'
94
+ require_relative 'rumale/preprocessing/l1_normalizer'
95
+ require_relative 'rumale/preprocessing/max_normalizer'
96
+ require_relative 'rumale/preprocessing/min_max_scaler'
97
+ require_relative 'rumale/preprocessing/max_abs_scaler'
98
+ require_relative 'rumale/preprocessing/standard_scaler'
99
+ require_relative 'rumale/preprocessing/bin_discretizer'
100
+ require_relative 'rumale/preprocessing/label_binarizer'
101
+ require_relative 'rumale/preprocessing/label_encoder'
102
+ require_relative 'rumale/preprocessing/one_hot_encoder'
103
+ require_relative 'rumale/preprocessing/ordinal_encoder'
104
+ require_relative 'rumale/preprocessing/binarizer'
105
+ require_relative 'rumale/preprocessing/polynomial_features'
106
+ require_relative 'rumale/preprocessing/kernel_calculator'
107
+ require_relative 'rumale/model_selection/k_fold'
108
+ require_relative 'rumale/model_selection/group_k_fold'
109
+ require_relative 'rumale/model_selection/stratified_k_fold'
110
+ require_relative 'rumale/model_selection/shuffle_split'
111
+ require_relative 'rumale/model_selection/group_shuffle_split'
112
+ require_relative 'rumale/model_selection/stratified_shuffle_split'
113
+ require_relative 'rumale/model_selection/time_series_split'
114
+ require_relative 'rumale/model_selection/cross_validation'
115
+ require_relative 'rumale/model_selection/grid_search_cv'
116
+ require_relative 'rumale/model_selection/function'
117
+ require_relative 'rumale/evaluation_measure/accuracy'
118
+ require_relative 'rumale/evaluation_measure/precision'
119
+ require_relative 'rumale/evaluation_measure/recall'
120
+ require_relative 'rumale/evaluation_measure/f_score'
121
+ require_relative 'rumale/evaluation_measure/roc_auc'
122
+ require_relative 'rumale/evaluation_measure/log_loss'
123
+ require_relative 'rumale/evaluation_measure/r2_score'
124
+ require_relative 'rumale/evaluation_measure/explained_variance_score'
125
+ require_relative 'rumale/evaluation_measure/mean_squared_error'
126
+ require_relative 'rumale/evaluation_measure/mean_squared_log_error'
127
+ require_relative 'rumale/evaluation_measure/mean_absolute_error'
128
+ require_relative 'rumale/evaluation_measure/median_absolute_error'
129
+ require_relative 'rumale/evaluation_measure/adjusted_rand_score'
130
+ require_relative 'rumale/evaluation_measure/purity'
131
+ require_relative 'rumale/evaluation_measure/mutual_information'
132
+ require_relative 'rumale/evaluation_measure/normalized_mutual_information'
133
+ require_relative 'rumale/evaluation_measure/silhouette_score'
134
+ require_relative 'rumale/evaluation_measure/davies_bouldin_score'
135
+ require_relative 'rumale/evaluation_measure/calinski_harabasz_score'
136
+ require_relative 'rumale/evaluation_measure/function'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.5
4
+ version: 0.23.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - yoshoku
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-14 00:00:00.000000000 Z
11
+ date: 2022-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: numo-narray
@@ -57,24 +57,13 @@ extensions:
57
57
  - ext/rumale/extconf.rb
58
58
  extra_rdoc_files: []
59
59
  files:
60
- - ".coveralls.yml"
61
- - ".github/workflows/build.yml"
62
- - ".github/workflows/coverage.yml"
63
- - ".gitignore"
64
- - ".rspec"
65
- - ".rubocop.yml"
66
- - ".travis.yml"
67
60
  - CHANGELOG.md
68
61
  - CODE_OF_CONDUCT.md
69
- - Gemfile
70
62
  - LICENSE.txt
71
63
  - README.md
72
- - Rakefile
73
64
  - ext/rumale/extconf.rb
74
- - ext/rumale/rumale.c
75
- - ext/rumale/rumale.h
76
- - ext/rumale/tree.c
77
- - ext/rumale/tree.h
65
+ - ext/rumale/rumaleext.c
66
+ - ext/rumale/rumaleext.h
78
67
  - lib/rumale.rb
79
68
  - lib/rumale/base/base_estimator.rb
80
69
  - lib/rumale/base/classifier.rb
@@ -208,7 +197,6 @@ files:
208
197
  - lib/rumale/validation.rb
209
198
  - lib/rumale/values.rb
210
199
  - lib/rumale/version.rb
211
- - rumale.gemspec
212
200
  homepage: https://github.com/yoshoku/rumale
213
201
  licenses:
214
202
  - BSD-2-Clause
@@ -218,6 +206,7 @@ metadata:
218
206
  source_code_uri: https://github.com/yoshoku/rumale
219
207
  documentation_uri: https://yoshoku.github.io/rumale/doc/
220
208
  bug_tracker_uri: https://github.com/yoshoku/rumale/issues
209
+ rubygems_mfa_required: 'true'
221
210
  post_install_message:
222
211
  rdoc_options: []
223
212
  require_paths:
@@ -233,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
222
  - !ruby/object:Gem::Version
234
223
  version: '0'
235
224
  requirements: []
236
- rubygems_version: 3.2.7
225
+ rubygems_version: 3.2.33
237
226
  signing_key:
238
227
  specification_version: 4
239
228
  summary: Rumale is a machine learning library in Ruby. Rumale provides machine learning
data/.coveralls.yml DELETED
@@ -1 +0,0 @@
1
- service_name: github-ci