rumale 0.13.8 → 0.14.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 +24 -0
- data/README.md +8 -10
- data/lib/rumale.rb +3 -0
- data/lib/rumale/base/classifier.rb +2 -2
- data/lib/rumale/base/cluster_analyzer.rb +2 -2
- data/lib/rumale/base/regressor.rb +2 -2
- data/lib/rumale/clustering/dbscan.rb +3 -4
- data/lib/rumale/clustering/gaussian_mixture.rb +5 -6
- data/lib/rumale/clustering/hdbscan.rb +4 -4
- data/lib/rumale/clustering/k_means.rb +5 -6
- data/lib/rumale/clustering/k_medoids.rb +5 -6
- data/lib/rumale/clustering/power_iteration.rb +4 -6
- data/lib/rumale/clustering/single_linkage.rb +3 -3
- data/lib/rumale/clustering/snn.rb +1 -1
- data/lib/rumale/clustering/spectral_clustering.rb +4 -6
- data/lib/rumale/dataset.rb +6 -10
- data/lib/rumale/decomposition/factor_analysis.rb +4 -4
- data/lib/rumale/decomposition/fast_ica.rb +6 -7
- data/lib/rumale/decomposition/nmf.rb +6 -7
- data/lib/rumale/decomposition/pca.rb +6 -7
- data/lib/rumale/ensemble/ada_boost_classifier.rb +8 -8
- data/lib/rumale/ensemble/ada_boost_regressor.rb +7 -7
- data/lib/rumale/ensemble/extra_trees_classifier.rb +8 -8
- data/lib/rumale/ensemble/extra_trees_regressor.rb +7 -7
- data/lib/rumale/ensemble/gradient_boosting_classifier.rb +8 -8
- data/lib/rumale/ensemble/gradient_boosting_regressor.rb +8 -8
- data/lib/rumale/ensemble/random_forest_classifier.rb +8 -8
- data/lib/rumale/ensemble/random_forest_regressor.rb +7 -7
- data/lib/rumale/evaluation_measure/accuracy.rb +2 -2
- data/lib/rumale/evaluation_measure/adjusted_rand_score.rb +2 -2
- data/lib/rumale/evaluation_measure/calinski_harabasz_score.rb +2 -2
- data/lib/rumale/evaluation_measure/davies_bouldin_score.rb +2 -2
- data/lib/rumale/evaluation_measure/explained_variance_score.rb +2 -2
- data/lib/rumale/evaluation_measure/f_score.rb +2 -2
- data/lib/rumale/evaluation_measure/log_loss.rb +2 -2
- data/lib/rumale/evaluation_measure/mean_absolute_error.rb +2 -2
- data/lib/rumale/evaluation_measure/mean_squared_error.rb +2 -2
- data/lib/rumale/evaluation_measure/mean_squared_log_error.rb +2 -2
- data/lib/rumale/evaluation_measure/median_absolute_error.rb +2 -2
- data/lib/rumale/evaluation_measure/mutual_information.rb +2 -2
- data/lib/rumale/evaluation_measure/normalized_mutual_information.rb +2 -2
- data/lib/rumale/evaluation_measure/precision.rb +2 -2
- data/lib/rumale/evaluation_measure/purity.rb +2 -2
- data/lib/rumale/evaluation_measure/r2_score.rb +2 -2
- data/lib/rumale/evaluation_measure/recall.rb +2 -2
- data/lib/rumale/evaluation_measure/roc_auc.rb +6 -3
- data/lib/rumale/evaluation_measure/silhouette_score.rb +2 -2
- data/lib/rumale/kernel_approximation/rbf.rb +5 -6
- data/lib/rumale/kernel_machine/kernel_pca.rb +4 -4
- data/lib/rumale/kernel_machine/kernel_ridge.rb +3 -3
- data/lib/rumale/kernel_machine/kernel_svc.rb +7 -8
- data/lib/rumale/linear_model/lasso.rb +5 -6
- data/lib/rumale/linear_model/linear_regression.rb +5 -6
- data/lib/rumale/linear_model/logistic_regression.rb +16 -15
- data/lib/rumale/linear_model/ridge.rb +5 -6
- data/lib/rumale/linear_model/svc.rb +34 -28
- data/lib/rumale/linear_model/svr.rb +5 -6
- data/lib/rumale/manifold/mds.rb +3 -4
- data/lib/rumale/manifold/tsne.rb +3 -5
- data/lib/rumale/model_selection/cross_validation.rb +6 -5
- data/lib/rumale/model_selection/grid_search_cv.rb +6 -6
- data/lib/rumale/model_selection/k_fold.rb +3 -3
- data/lib/rumale/model_selection/shuffle_split.rb +3 -5
- data/lib/rumale/model_selection/stratified_k_fold.rb +4 -4
- data/lib/rumale/model_selection/stratified_shuffle_split.rb +4 -6
- data/lib/rumale/multiclass/one_vs_rest_classifier.rb +4 -4
- data/lib/rumale/naive_bayes/naive_bayes.rb +14 -14
- data/lib/rumale/nearest_neighbors/k_neighbors_classifier.rb +5 -5
- data/lib/rumale/nearest_neighbors/k_neighbors_regressor.rb +4 -4
- data/lib/rumale/neural_network/base_mlp.rb +244 -0
- data/lib/rumale/neural_network/mlp_classifier.rb +119 -0
- data/lib/rumale/neural_network/mlp_regressor.rb +89 -0
- data/lib/rumale/optimizer/ada_grad.rb +1 -1
- data/lib/rumale/optimizer/adam.rb +3 -3
- data/lib/rumale/optimizer/nadam.rb +1 -1
- data/lib/rumale/optimizer/rmsprop.rb +1 -1
- data/lib/rumale/optimizer/sgd.rb +1 -1
- data/lib/rumale/optimizer/yellow_fin.rb +1 -2
- data/lib/rumale/pairwise_metric.rb +17 -19
- data/lib/rumale/pipeline/pipeline.rb +10 -10
- data/lib/rumale/polynomial_model/factorization_machine_classifier.rb +29 -21
- data/lib/rumale/polynomial_model/factorization_machine_regressor.rb +6 -6
- data/lib/rumale/preprocessing/bin_discretizer.rb +3 -3
- data/lib/rumale/preprocessing/l2_normalizer.rb +2 -2
- data/lib/rumale/preprocessing/label_binarizer.rb +2 -2
- data/lib/rumale/preprocessing/label_encoder.rb +1 -1
- data/lib/rumale/preprocessing/max_abs_scaler.rb +3 -3
- data/lib/rumale/preprocessing/min_max_scaler.rb +3 -3
- data/lib/rumale/preprocessing/one_hot_encoder.rb +4 -3
- data/lib/rumale/preprocessing/ordinal_encoder.rb +1 -1
- data/lib/rumale/preprocessing/standard_scaler.rb +3 -3
- data/lib/rumale/tree/base_decision_tree.rb +1 -1
- data/lib/rumale/tree/decision_tree_classifier.rb +7 -7
- data/lib/rumale/tree/decision_tree_regressor.rb +6 -6
- data/lib/rumale/tree/extra_tree_classifier.rb +7 -7
- data/lib/rumale/tree/extra_tree_regressor.rb +6 -6
- data/lib/rumale/tree/gradient_tree_regressor.rb +9 -9
- data/lib/rumale/validation.rb +32 -2
- data/lib/rumale/version.rb +1 -1
- data/rumale.gemspec +7 -7
- metadata +11 -7
@@ -52,9 +52,9 @@ module Rumale
|
|
52
52
|
def initialize(n_estimators: 10,
|
53
53
|
criterion: 'mse', max_depth: nil, max_leaf_nodes: nil, min_samples_leaf: 1,
|
54
54
|
max_features: nil, n_jobs: nil, random_seed: nil)
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
check_params_numeric_or_nil(max_depth: max_depth, max_leaf_nodes: max_leaf_nodes,
|
56
|
+
max_features: max_features, n_jobs: n_jobs, random_seed: random_seed)
|
57
|
+
check_params_numeric(n_estimators: n_estimators, min_samples_leaf: min_samples_leaf)
|
58
58
|
check_params_string(criterion: criterion)
|
59
59
|
check_params_positive(n_estimators: n_estimators, max_depth: max_depth,
|
60
60
|
max_leaf_nodes: max_leaf_nodes, min_samples_leaf: min_samples_leaf,
|
@@ -80,8 +80,8 @@ module Rumale
|
|
80
80
|
# @param y [Numo::DFloat] (shape: [n_samples, n_outputs]) The target values to be used for fitting the model.
|
81
81
|
# @return [RandomForestRegressor] The learned regressor itself.
|
82
82
|
def fit(x, y)
|
83
|
-
|
84
|
-
|
83
|
+
x = check_convert_sample_array(x)
|
84
|
+
y = check_convert_tvalue_array(y)
|
85
85
|
check_sample_tvalue_size(x, y)
|
86
86
|
# Initialize some variables.
|
87
87
|
n_samples, n_features = x.shape
|
@@ -122,7 +122,7 @@ module Rumale
|
|
122
122
|
# @param x [Numo::DFloat] (shape: [n_samples, n_features]) The samples to predict the values.
|
123
123
|
# @return [Numo::DFloat] (shape: [n_samples, n_outputs]) Predicted value per sample.
|
124
124
|
def predict(x)
|
125
|
-
|
125
|
+
x = check_convert_sample_array(x)
|
126
126
|
if enable_parallel?
|
127
127
|
parallel_map(@params[:n_estimators]) { |n| @estimators[n].predict(x) }.reduce(&:+) / @params[:n_estimators]
|
128
128
|
else
|
@@ -135,7 +135,7 @@ module Rumale
|
|
135
135
|
# @param x [Numo::DFloat] (shape: [n_samples, n_features]) The samples to assign each leaf.
|
136
136
|
# @return [Numo::Int32] (shape: [n_samples, n_estimators]) Leaf index for sample.
|
137
137
|
def apply(x)
|
138
|
-
|
138
|
+
x = check_convert_sample_array(x)
|
139
139
|
Numo::Int32[*Array.new(@params[:n_estimators]) { |n| @estimators[n].apply(x) }].transpose
|
140
140
|
end
|
141
141
|
|
@@ -19,8 +19,8 @@ module Rumale
|
|
19
19
|
# @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted labels.
|
20
20
|
# @return [Float] Mean accuracy
|
21
21
|
def score(y_true, y_pred)
|
22
|
-
|
23
|
-
|
22
|
+
y_true = check_convert_label_array(y_true)
|
23
|
+
y_pred = check_convert_label_array(y_pred)
|
24
24
|
|
25
25
|
(y_true.to_a.map.with_index { |label, n| label == y_pred[n] ? 1 : 0 }).inject(:+) / y_true.size.to_f
|
26
26
|
end
|
@@ -21,8 +21,8 @@ module Rumale
|
|
21
21
|
# @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted cluster labels.
|
22
22
|
# @return [Float] Adjusted rand index.
|
23
23
|
def score(y_true, y_pred)
|
24
|
-
|
25
|
-
|
24
|
+
y_true = check_convert_label_array(y_true)
|
25
|
+
y_pred = check_convert_label_array(y_pred)
|
26
26
|
|
27
27
|
# initiazlie some variables.
|
28
28
|
n_samples = y_pred.size
|
@@ -21,8 +21,8 @@ module Rumale
|
|
21
21
|
# @param y [Numo::Int32] (shape: [n_samples]) The predicted labels for each sample.
|
22
22
|
# @return [Float] The Calinski and Harabasz score.
|
23
23
|
def score(x, y)
|
24
|
-
|
25
|
-
|
24
|
+
x = check_convert_sample_array(x)
|
25
|
+
y = check_convert_label_array(y)
|
26
26
|
check_sample_label_size(x, y)
|
27
27
|
|
28
28
|
labels = y.to_a.uniq.sort
|
@@ -22,8 +22,8 @@ module Rumale
|
|
22
22
|
# @param y [Numo::Int32] (shape: [n_samples]) The predicted labels for each sample.
|
23
23
|
# @return [Float] The Davies-Bouldin score.
|
24
24
|
def score(x, y)
|
25
|
-
|
26
|
-
|
25
|
+
x = check_convert_sample_array(x)
|
26
|
+
y = check_convert_label_array(y)
|
27
27
|
check_sample_label_size(x, y)
|
28
28
|
|
29
29
|
labels = y.to_a.uniq.sort
|
@@ -18,8 +18,8 @@ module Rumale
|
|
18
18
|
# @param y_pred [Numo::DFloat] (shape: [n_samples, n_outputs]) Estimated target values.
|
19
19
|
# @return [Float] Explained variance score.
|
20
20
|
def score(y_true, y_pred)
|
21
|
-
|
22
|
-
|
21
|
+
y_true = check_convert_tvalue_array(y_true)
|
22
|
+
y_pred = check_convert_tvalue_array(y_pred)
|
23
23
|
raise ArgumentError, 'Expect to have the same size both y_true and y_pred.' unless y_true.shape == y_pred.shape
|
24
24
|
|
25
25
|
diff = y_true - y_pred
|
@@ -33,8 +33,8 @@ module Rumale
|
|
33
33
|
# @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted labels.
|
34
34
|
# @return [Float] Average F1-score
|
35
35
|
def score(y_true, y_pred)
|
36
|
-
|
37
|
-
|
36
|
+
y_true = check_convert_label_array(y_true)
|
37
|
+
y_pred = check_convert_label_array(y_pred)
|
38
38
|
|
39
39
|
case @average
|
40
40
|
when 'binary'
|
@@ -22,8 +22,8 @@ module Rumale
|
|
22
22
|
# @param eps [Float] A small value close to zero to avoid outputting infinity in logarithmic calcuation.
|
23
23
|
# @return [Float] mean logarithmic loss
|
24
24
|
def score(y_true, y_pred, eps = 1e-15)
|
25
|
-
|
26
|
-
|
25
|
+
y_true = check_convert_label_array(y_true)
|
26
|
+
y_pred = check_convert_tvalue_array(y_pred)
|
27
27
|
|
28
28
|
n_samples, n_classes = y_pred.shape
|
29
29
|
clipped_p = y_pred.clip(eps, 1 - eps)
|
@@ -18,8 +18,8 @@ module Rumale
|
|
18
18
|
# @param y_pred [Numo::DFloat] (shape: [n_samples, n_outputs]) Estimated target values.
|
19
19
|
# @return [Float] Mean absolute error
|
20
20
|
def score(y_true, y_pred)
|
21
|
-
|
22
|
-
|
21
|
+
y_true = check_convert_tvalue_array(y_true)
|
22
|
+
y_pred = check_convert_tvalue_array(y_pred)
|
23
23
|
raise ArgumentError, 'Expect to have the same size both y_true and y_pred.' unless y_true.shape == y_pred.shape
|
24
24
|
|
25
25
|
(y_true - y_pred).abs.mean
|
@@ -18,8 +18,8 @@ module Rumale
|
|
18
18
|
# @param y_pred [Numo::DFloat] (shape: [n_samples, n_outputs]) Estimated target values.
|
19
19
|
# @return [Float] Mean squared error
|
20
20
|
def score(y_true, y_pred)
|
21
|
-
|
22
|
-
|
21
|
+
y_true = check_convert_tvalue_array(y_true)
|
22
|
+
y_pred = check_convert_tvalue_array(y_pred)
|
23
23
|
raise ArgumentError, 'Expect to have the same size both y_true and y_pred.' unless y_true.shape == y_pred.shape
|
24
24
|
|
25
25
|
((y_true - y_pred)**2).mean
|
@@ -18,8 +18,8 @@ module Rumale
|
|
18
18
|
# @param y_pred [Numo::DFloat] (shape: [n_samples, n_outputs]) Estimated target values.
|
19
19
|
# @return [Float] Mean squared logarithmic error.
|
20
20
|
def score(y_true, y_pred)
|
21
|
-
|
22
|
-
|
21
|
+
y_true = check_convert_tvalue_array(y_true)
|
22
|
+
y_pred = check_convert_tvalue_array(y_pred)
|
23
23
|
raise ArgumentError, 'Expect to have the same size both y_true and y_pred.' unless y_true.shape == y_pred.shape
|
24
24
|
|
25
25
|
((Numo::NMath.log(y_true + 1) - Numo::NMath.log(y_pred + 1))**2).mean
|
@@ -18,8 +18,8 @@ module Rumale
|
|
18
18
|
# @param y_pred [Numo::DFloat] (shape: [n_samples]) Estimated target values.
|
19
19
|
# @return [Float] Median absolute error.
|
20
20
|
def score(y_true, y_pred)
|
21
|
-
|
22
|
-
|
21
|
+
y_true = check_convert_tvalue_array(y_true)
|
22
|
+
y_pred = check_convert_tvalue_array(y_pred)
|
23
23
|
raise ArgumentError, 'Expect to have the same size both y_true and y_pred.' unless y_true.shape == y_pred.shape
|
24
24
|
raise ArgumentError, 'Expect target values to be 1-D arrray' if [y_true.shape.size, y_pred.shape.size].max > 1
|
25
25
|
|
@@ -21,8 +21,8 @@ module Rumale
|
|
21
21
|
# @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted cluster labels.
|
22
22
|
# @return [Float] Mutual information.
|
23
23
|
def score(y_true, y_pred)
|
24
|
-
|
25
|
-
|
24
|
+
y_true = check_convert_label_array(y_true)
|
25
|
+
y_pred = check_convert_label_array(y_pred)
|
26
26
|
# initiazlie some variables.
|
27
27
|
mutual_information = 0.0
|
28
28
|
n_samples = y_pred.size
|
@@ -23,8 +23,8 @@ module Rumale
|
|
23
23
|
# @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted cluster labels.
|
24
24
|
# @return [Float] Normalized mutual information
|
25
25
|
def score(y_true, y_pred)
|
26
|
-
|
27
|
-
|
26
|
+
y_true = check_convert_label_array(y_true)
|
27
|
+
y_pred = check_convert_label_array(y_pred)
|
28
28
|
# calculate entropies.
|
29
29
|
class_entropy = entropy(y_true)
|
30
30
|
return 0.0 if class_entropy.zero?
|
@@ -33,8 +33,8 @@ module Rumale
|
|
33
33
|
# @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted labels.
|
34
34
|
# @return [Float] Average precision
|
35
35
|
def score(y_true, y_pred)
|
36
|
-
|
37
|
-
|
36
|
+
y_true = check_convert_label_array(y_true)
|
37
|
+
y_pred = check_convert_label_array(y_pred)
|
38
38
|
|
39
39
|
case @average
|
40
40
|
when 'binary'
|
@@ -21,8 +21,8 @@ module Rumale
|
|
21
21
|
# @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted cluster labels.
|
22
22
|
# @return [Float] Purity
|
23
23
|
def score(y_true, y_pred)
|
24
|
-
|
25
|
-
|
24
|
+
y_true = check_convert_label_array(y_true)
|
25
|
+
y_pred = check_convert_label_array(y_pred)
|
26
26
|
# initiazlie some variables.
|
27
27
|
purity = 0
|
28
28
|
n_samples = y_pred.size
|
@@ -22,8 +22,8 @@ module Rumale
|
|
22
22
|
# @param y_pred [Numo::DFloat] (shape: [n_samples, n_outputs]) Estimated taget values.
|
23
23
|
# @return [Float] Coefficient of determination
|
24
24
|
def score(y_true, y_pred)
|
25
|
-
|
26
|
-
|
25
|
+
y_true = check_convert_tvalue_array(y_true)
|
26
|
+
y_pred = check_convert_tvalue_array(y_pred)
|
27
27
|
raise ArgumentError, 'Expect to have the same size both y_true and y_pred.' unless y_true.shape == y_pred.shape
|
28
28
|
|
29
29
|
n_samples, n_outputs = y_true.shape
|
@@ -33,8 +33,8 @@ module Rumale
|
|
33
33
|
# @param y_pred [Numo::Int32] (shape: [n_samples]) Predicted labels.
|
34
34
|
# @return [Float] Average recall
|
35
35
|
def score(y_true, y_pred)
|
36
|
-
|
37
|
-
|
36
|
+
y_true = check_convert_label_array(y_true)
|
37
|
+
y_pred = check_convert_label_array(y_pred)
|
38
38
|
|
39
39
|
case @average
|
40
40
|
when 'binary'
|
@@ -33,7 +33,8 @@ module Rumale
|
|
33
33
|
# Predicted class probabilities or confidence scores.
|
34
34
|
# @return [Float] (macro-averaged) ROC AUC.
|
35
35
|
def score(y_true, y_score)
|
36
|
-
|
36
|
+
y_true = Numo::Int32.cast(y_true) unless y_true.is_a?(Numo::Int32)
|
37
|
+
y_score = Numo::DFloat.cast(y_score) unless y_score.is_a?(Numo::DFloat)
|
37
38
|
raise ArgumentError, 'Expect to have the same shape for y_true and y_score.' unless y_true.shape == y_score.shape
|
38
39
|
|
39
40
|
n_classes = y_score.shape[1]
|
@@ -59,7 +60,8 @@ module Rumale
|
|
59
60
|
# @return [Array] fpr (Numo::DFloat): false positive rates. tpr (Numo::DFloat): true positive rates.
|
60
61
|
# thresholds (Numo::DFloat): thresholds on the decision function used to calculate fpr and tpr.
|
61
62
|
def roc_curve(y_true, y_score, pos_label = nil)
|
62
|
-
|
63
|
+
y_true = Numo::Int32.cast(y_true) unless y_true.is_a?(Numo::Int32)
|
64
|
+
y_score = Numo::DFloat.cast(y_score) unless y_score.is_a?(Numo::DFloat)
|
63
65
|
raise ArgumentError, 'Expect y_true to be 1-D arrray.' unless y_true.shape[1].nil?
|
64
66
|
raise ArgumentError, 'Expect y_score to be 1-D arrray.' unless y_score.shape[1].nil?
|
65
67
|
labels = y_true.to_a.uniq
|
@@ -90,7 +92,8 @@ module Rumale
|
|
90
92
|
# @param y [Numo::Int32/Numo::DFloat] (shape: [n_elements]) y coordinates.
|
91
93
|
# @return [Float] area under the curve.
|
92
94
|
def auc(x, y)
|
93
|
-
|
95
|
+
x = Numo::NArray.asarray(x) unless x.is_a?(Numo::NArray)
|
96
|
+
y = Numo::NArray.asarray(y) unless y.is_a?(Numo::NArray)
|
94
97
|
raise ArgumentError, 'Expect x to be 1-D arrray.' unless x.shape[1].nil?
|
95
98
|
raise ArgumentError, 'Expect y to be 1-D arrray.' unless y.shape[1].nil?
|
96
99
|
n_samples = [x.shape[0], y.shape[0]].min
|
@@ -32,8 +32,8 @@ module Rumale
|
|
32
32
|
# @param y [Numo::Int32] (shape: [n_samples]) The predicted labels for each sample.
|
33
33
|
# @return [Float] The mean of silhouette coefficient.
|
34
34
|
def score(x, y)
|
35
|
-
|
36
|
-
|
35
|
+
x = check_convert_sample_array(x)
|
36
|
+
y = check_convert_label_array(y)
|
37
37
|
check_sample_label_size(x, y)
|
38
38
|
|
39
39
|
dist_mat = @metric == 'precomputed' ? x : Rumale::PairwiseMetric.euclidean_distance(x)
|
@@ -38,9 +38,8 @@ module Rumale
|
|
38
38
|
# @param n_components [Integer] The number of dimensions of the RBF kernel feature space.
|
39
39
|
# @param random_seed [Integer] The seed value using to initialize the random generator.
|
40
40
|
def initialize(gamma: 1.0, n_components: 128, random_seed: nil)
|
41
|
-
|
42
|
-
|
43
|
-
check_params_type_or_nil(Integer, random_seed: random_seed)
|
41
|
+
check_params_numeric(gamma: gamma, n_components: n_components)
|
42
|
+
check_params_numeric_or_nil(random_seed: random_seed)
|
44
43
|
check_params_positive(gamma: gamma, n_components: n_components)
|
45
44
|
@params = {}
|
46
45
|
@params[:gamma] = gamma
|
@@ -60,7 +59,7 @@ module Rumale
|
|
60
59
|
# This method uses only the number of features of the data.
|
61
60
|
# @return [RBF] The learned transformer itself.
|
62
61
|
def fit(x, _y = nil)
|
63
|
-
|
62
|
+
x = check_convert_sample_array(x)
|
64
63
|
|
65
64
|
n_features = x.shape[1]
|
66
65
|
sub_rng = @rng.dup
|
@@ -80,7 +79,7 @@ module Rumale
|
|
80
79
|
# @param x [Numo::DFloat] (shape: [n_samples, n_features]) The training data to be used for fitting the model.
|
81
80
|
# @return [Numo::DFloat] (shape: [n_samples, n_components]) The transformed data
|
82
81
|
def fit_transform(x, _y = nil)
|
83
|
-
|
82
|
+
x = check_convert_sample_array(x)
|
84
83
|
|
85
84
|
fit(x).transform(x)
|
86
85
|
end
|
@@ -92,7 +91,7 @@ module Rumale
|
|
92
91
|
# @param x [Numo::DFloat] (shape: [n_samples, n_features]) The data to be transformed with the learned model.
|
93
92
|
# @return [Numo::DFloat] (shape: [n_samples, n_components]) The transformed data.
|
94
93
|
def transform(x)
|
95
|
-
|
94
|
+
x = check_convert_sample_array(x)
|
96
95
|
|
97
96
|
n_samples, = x.shape
|
98
97
|
projection = x.dot(@random_mat) + @random_vec.tile(n_samples, 1)
|
@@ -35,7 +35,7 @@ module Rumale
|
|
35
35
|
#
|
36
36
|
# @param n_components [Integer] The number of components.
|
37
37
|
def initialize(n_components: 2)
|
38
|
-
|
38
|
+
check_params_numeric(n_components: n_components)
|
39
39
|
@params = {}
|
40
40
|
@params[:n_components] = n_components
|
41
41
|
@alphas = nil
|
@@ -52,7 +52,7 @@ module Rumale
|
|
52
52
|
# The kernel matrix of the training data to be used for fitting the model.
|
53
53
|
# @return [KernelPCA] The learned transformer itself.
|
54
54
|
def fit(x, _y = nil)
|
55
|
-
|
55
|
+
x = check_convert_sample_array(x)
|
56
56
|
raise ArgumentError, 'Expect the kernel matrix of training data to be square.' unless x.shape[0] == x.shape[1]
|
57
57
|
raise 'KernelPCA#fit requires Numo::Linalg but that is not loaded.' unless enable_linalg?
|
58
58
|
|
@@ -74,7 +74,7 @@ module Rumale
|
|
74
74
|
# The kernel matrix of the training data to be used for fitting the model and transformed.
|
75
75
|
# @return [Numo::DFloat] (shape: [n_samples, n_components]) The transformed data
|
76
76
|
def fit_transform(x, _y = nil)
|
77
|
-
|
77
|
+
x = check_convert_sample_array(x)
|
78
78
|
fit(x).transform(x)
|
79
79
|
end
|
80
80
|
|
@@ -84,7 +84,7 @@ module Rumale
|
|
84
84
|
# The kernel matrix between testing samples and training samples to be transformed.
|
85
85
|
# @return [Numo::DFloat] (shape: [n_testing_samples, n_components]) The transformed data.
|
86
86
|
def transform(x)
|
87
|
-
|
87
|
+
x = check_convert_sample_array(x)
|
88
88
|
col_mean = x.sum(1) / @row_mean.shape[0]
|
89
89
|
centered_kernel_mat = x - col_mean.expand_dims(1) - @row_mean + @all_mean
|
90
90
|
transform_mat = @alphas.dot((1.0 / Numo::NMath.sqrt(@lambdas)).diag)
|
@@ -42,8 +42,8 @@ module Rumale
|
|
42
42
|
# @param y [Numo::DFloat] (shape: [n_samples, n_outputs]) The taget values to be used for fitting the model.
|
43
43
|
# @return [KernelRidge] The learned regressor itself.
|
44
44
|
def fit(x, y)
|
45
|
-
|
46
|
-
|
45
|
+
x = check_convert_sample_array(x)
|
46
|
+
y = check_convert_tvalue_array(y)
|
47
47
|
check_sample_tvalue_size(x, y)
|
48
48
|
raise ArgumentError, 'Expect the kernel matrix of training data to be square.' unless x.shape[0] == x.shape[1]
|
49
49
|
raise 'KernelRidge#fit requires Numo::Linalg but that is not loaded.' unless enable_linalg?
|
@@ -72,7 +72,7 @@ module Rumale
|
|
72
72
|
# The kernel matrix between testing samples and training samples to predict values.
|
73
73
|
# @return [Numo::DFloat] (shape: [n_samples, n_outputs]) Predicted values per sample.
|
74
74
|
def predict(x)
|
75
|
-
|
75
|
+
x = check_convert_sample_array(x)
|
76
76
|
x.dot(@weight_vec)
|
77
77
|
end
|
78
78
|
|
@@ -52,10 +52,9 @@ module Rumale
|
|
52
52
|
# This parameter is ignored if the Parallel gem is not loaded.
|
53
53
|
# @param random_seed [Integer] The seed value using to initialize the random generator.
|
54
54
|
def initialize(reg_param: 1.0, max_iter: 1000, probability: false, n_jobs: nil, random_seed: nil)
|
55
|
-
|
56
|
-
check_params_integer(max_iter: max_iter)
|
55
|
+
check_params_numeric(reg_param: reg_param, max_iter: max_iter)
|
57
56
|
check_params_boolean(probability: probability)
|
58
|
-
|
57
|
+
check_params_numeric_or_nil(n_jobs: n_jobs, random_seed: random_seed)
|
59
58
|
check_params_positive(reg_param: reg_param, max_iter: max_iter)
|
60
59
|
@params = {}
|
61
60
|
@params[:reg_param] = reg_param
|
@@ -77,8 +76,8 @@ module Rumale
|
|
77
76
|
# @param y [Numo::Int32] (shape: [n_training_samples]) The labels to be used for fitting the model.
|
78
77
|
# @return [KernelSVC] The learned classifier itself.
|
79
78
|
def fit(x, y)
|
80
|
-
|
81
|
-
|
79
|
+
x = check_convert_sample_array(x)
|
80
|
+
y = check_convert_label_array(y)
|
82
81
|
check_sample_label_size(x, y)
|
83
82
|
|
84
83
|
@classes = Numo::Int32[*y.to_a.uniq.sort]
|
@@ -117,7 +116,7 @@ module Rumale
|
|
117
116
|
# The kernel matrix between testing samples and training samples to compute the scores.
|
118
117
|
# @return [Numo::DFloat] (shape: [n_testing_samples, n_classes]) Confidence score per sample.
|
119
118
|
def decision_function(x)
|
120
|
-
|
119
|
+
x = check_convert_sample_array(x)
|
121
120
|
|
122
121
|
x.dot(@weight_vec.transpose)
|
123
122
|
end
|
@@ -128,7 +127,7 @@ module Rumale
|
|
128
127
|
# The kernel matrix between testing samples and training samples to predict the labels.
|
129
128
|
# @return [Numo::Int32] (shape: [n_testing_samples]) Predicted class label per sample.
|
130
129
|
def predict(x)
|
131
|
-
|
130
|
+
x = check_convert_sample_array(x)
|
132
131
|
|
133
132
|
return Numo::Int32.cast(decision_function(x).ge(0.0)) * 2 - 1 if @classes.size <= 2
|
134
133
|
|
@@ -148,7 +147,7 @@ module Rumale
|
|
148
147
|
# The kernel matrix between testing samples and training samples to predict the labels.
|
149
148
|
# @return [Numo::DFloat] (shape: [n_samples, n_classes]) Predicted probability of each class per sample.
|
150
149
|
def predict_proba(x)
|
151
|
-
|
150
|
+
x = check_convert_sample_array(x)
|
152
151
|
|
153
152
|
if @classes.size > 2
|
154
153
|
probs = 1.0 / (Numo::NMath.exp(@prob_param[true, 0] * decision_function(x) + @prob_param[true, 1]) + 1.0)
|
@@ -48,10 +48,9 @@ module Rumale
|
|
48
48
|
# @param random_seed [Integer] The seed value using to initialize the random generator.
|
49
49
|
def initialize(reg_param: 1.0, fit_bias: false, bias_scale: 1.0, max_iter: 1000, batch_size: 10, optimizer: nil,
|
50
50
|
n_jobs: nil, random_seed: nil)
|
51
|
-
|
52
|
-
check_params_integer(max_iter: max_iter, batch_size: batch_size)
|
51
|
+
check_params_numeric(reg_param: reg_param, bias_scale: bias_scale, max_iter: max_iter, batch_size: batch_size)
|
53
52
|
check_params_boolean(fit_bias: fit_bias)
|
54
|
-
|
53
|
+
check_params_numeric_or_nil(n_jobs: n_jobs, random_seed: random_seed)
|
55
54
|
check_params_positive(reg_param: reg_param, max_iter: max_iter, batch_size: batch_size)
|
56
55
|
super
|
57
56
|
end
|
@@ -62,8 +61,8 @@ module Rumale
|
|
62
61
|
# @param y [Numo::Int32] (shape: [n_samples, n_outputs]) The target values to be used for fitting the model.
|
63
62
|
# @return [Lasso] The learned regressor itself.
|
64
63
|
def fit(x, y)
|
65
|
-
|
66
|
-
|
64
|
+
x = check_convert_sample_array(x)
|
65
|
+
y = check_convert_tvalue_array(y)
|
67
66
|
check_sample_tvalue_size(x, y)
|
68
67
|
|
69
68
|
n_outputs = y.shape[1].nil? ? 1 : y.shape[1]
|
@@ -89,7 +88,7 @@ module Rumale
|
|
89
88
|
# @param x [Numo::DFloat] (shape: [n_samples, n_features]) The samples to predict the values.
|
90
89
|
# @return [Numo::DFloat] (shape: [n_samples, n_outputs]) Predicted values per sample.
|
91
90
|
def predict(x)
|
92
|
-
|
91
|
+
x = check_convert_sample_array(x)
|
93
92
|
x.dot(@weight_vec.transpose) + @bias_term
|
94
93
|
end
|
95
94
|
|