🎨 Refactor Tree estimator specs

This commit is contained in:
yoshoku 2021-05-04 00:28:53 +09:00
parent 66251d76bc
commit 5749932e5d
No known key found for this signature in database
GPG Key ID: CE6FD44E4CECB558
5 changed files with 55 additions and 32 deletions

View File

@ -27,11 +27,13 @@ RSpec.describe Rumale::Tree::DecisionTreeClassifier do
let(:dataset) { two_clusters_dataset }
it 'classifies two clusters data.', :aggregate_failures do
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.classes.class).to eq(Numo::Int32)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.classes).to be_a(Numo::Int32)
expect(estimator.classes).to be_contiguous
expect(estimator.classes.ndim).to eq(1)
expect(estimator.classes.shape[0]).to eq(n_classes)
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.ndim).to eq(1)
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(score).to eq(1.0)
@ -42,18 +44,21 @@ RSpec.describe Rumale::Tree::DecisionTreeClassifier do
let(:dataset) { three_clusters_dataset }
it 'classifies three clusters data.', :aggregate_failures do
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.classes.class).to eq(Numo::Int32)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.classes).to be_a(Numo::Int32)
expect(estimator.classes).to be_contiguous
expect(estimator.classes.ndim).to eq(1)
expect(estimator.classes.shape[0]).to eq(n_classes)
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.ndim).to eq(1)
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(score).to eq(1.0)
end
it 'estimates class probabilities with three clusters dataset.', :aggregate_failures do
expect(probs.class).to eq(Numo::DFloat)
expect(probs).to be_a(Numo::DFloat)
expect(probs).to be_contiguous
expect(probs.ndim).to eq(2)
expect(probs.shape[0]).to eq(n_samples)
expect(probs.shape[1]).to eq(n_classes)

View File

@ -26,14 +26,17 @@ RSpec.describe Rumale::Tree::DecisionTreeRegressor do
let(:y) { single_target }
it 'learns the model for single regression problem.', :aggregate_failures do
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.ndim).to eq(1)
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(estimator.leaf_values.class).to eq(Numo::DFloat)
expect(estimator.leaf_values).to be_a(Numo::DFloat)
expect(estimator.leaf_values).to be_contiguous
expect(estimator.leaf_values.ndim).to eq(1)
expect(estimator.leaf_values.shape[0]).not_to be_zero
expect(predicted.class).to eq(Numo::DFloat)
expect(predicted).to be_a(Numo::DFloat)
expect(predicted).to be_contiguous
expect(predicted.ndim).to eq(1)
expect(predicted.shape[0]).to eq(n_samples)
expect(score).to be_within(0.01).of(1.0)
@ -112,15 +115,18 @@ RSpec.describe Rumale::Tree::DecisionTreeRegressor do
let(:y) { multi_target }
it 'learns the model for multiple regression problem.', :aggregate_failures do
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.ndim).to eq(1)
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(estimator.leaf_values.class).to eq(Numo::DFloat)
expect(estimator.leaf_values).to be_a(Numo::DFloat)
expect(estimator.leaf_values).to be_contiguous
expect(estimator.leaf_values.ndim).to eq(2)
expect(estimator.leaf_values.shape[0]).not_to be_zero
expect(estimator.leaf_values.shape[1]).to eq(n_outputs)
expect(predicted.class).to eq(Numo::DFloat)
expect(predicted).to be_a(Numo::DFloat)
expect(predicted).to be_contiguous
expect(predicted.ndim).to eq(2)
expect(predicted.shape[0]).to eq(n_samples)
expect(predicted.shape[1]).to eq(n_outputs)

View File

@ -27,11 +27,13 @@ RSpec.describe Rumale::Tree::ExtraTreeClassifier do
let(:dataset) { two_clusters_dataset }
it 'classifies two clusters data.', :aggregate_failures do
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.classes.class).to eq(Numo::Int32)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.classes).to be_a(Numo::Int32)
expect(estimator.classes).to be_contiguous
expect(estimator.classes.ndim).to eq(1)
expect(estimator.classes.shape[0]).to eq(n_classes)
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.ndim).to eq(1)
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(score).to eq(1.0)
@ -42,18 +44,21 @@ RSpec.describe Rumale::Tree::ExtraTreeClassifier do
let(:dataset) { three_clusters_dataset }
it 'classifies three clusters data.', :aggregate_failures do
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.classes.class).to eq(Numo::Int32)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.classes).to be_a(Numo::Int32)
expect(estimator.classes).to be_contiguous
expect(estimator.classes.ndim).to eq(1)
expect(estimator.classes.shape[0]).to eq(n_classes)
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.ndim).to eq(1)
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(score).to eq(1.0)
end
it 'estimates class probabilities with three clusters dataset.', :aggregate_failures do
expect(probs.class).to eq(Numo::DFloat)
expect(probs).to be_a(Numo::DFloat)
expect(probs).to be_contiguous
expect(probs.ndim).to eq(2)
expect(probs.shape[0]).to eq(n_samples)
expect(probs.shape[1]).to eq(n_classes)

View File

@ -26,14 +26,17 @@ RSpec.describe Rumale::Tree::ExtraTreeRegressor do
let(:y) { single_target }
it 'learns the model for single regression problem.', :aggregate_failures do
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.ndim).to eq(1)
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(estimator.leaf_values.class).to eq(Numo::DFloat)
expect(estimator.leaf_values).to be_a(Numo::DFloat)
expect(estimator.leaf_values).to be_contiguous
expect(estimator.leaf_values.ndim).to eq(1)
expect(estimator.leaf_values.shape[0]).not_to be_zero
expect(predicted.class).to eq(Numo::DFloat)
expect(predicted).to be_a(Numo::DFloat)
expect(predicted).to be_contiguous
expect(predicted.ndim).to eq(1)
expect(predicted.shape[0]).to eq(n_samples)
expect(score).to be_within(0.01).of(1.0)
@ -111,11 +114,13 @@ RSpec.describe Rumale::Tree::ExtraTreeRegressor do
let(:y) { multi_target }
it 'learns the model for multiple regression problem.', :aggregate_failures do
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.ndim).to eq(1)
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(estimator.leaf_values.class).to eq(Numo::DFloat)
expect(estimator.leaf_values).to be_a(Numo::DFloat)
expect(estimator.leaf_values).to be_contiguous
expect(estimator.leaf_values.ndim).to eq(2)
expect(estimator.leaf_values.shape[0]).not_to be_zero
expect(estimator.leaf_values.shape[1]).to eq(n_outputs)

View File

@ -23,11 +23,13 @@ RSpec.describe Rumale::Tree::GradientTreeRegressor do
it 'classifies two clusters data.' do
estimator.fit(x_bin, y_bin, grad, hess)
expect(estimator.tree.class).to eq(Rumale::Tree::Node)
expect(estimator.leaf_weights.class).to eq(Numo::DFloat)
expect(estimator.tree).to be_a(Rumale::Tree::Node)
expect(estimator.leaf_weights).to be_a(Numo::DFloat)
expect(estimator.leaf_weights).to be_contiguous
expect(estimator.leaf_weights.shape[0]).to eq(2)
expect(estimator.leaf_weights.shape[1]).to be_nil
expect(estimator.feature_importances.class).to eq(Numo::DFloat)
expect(estimator.feature_importances).to be_a(Numo::DFloat)
expect(estimator.feature_importances).to be_contiguous
expect(estimator.feature_importances.shape[0]).to eq(n_features)
expect(estimator.feature_importances.shape[1]).to be_nil
expect(estimator.score(x_bin, Numo::DFloat.cast(y_bin))).to be > 0.95