mirror of
https://github.com/Doctorado-ML/benchmark.git
synced 2025-08-17 16:35:54 +00:00
Fix tests 100% coverage
This commit is contained in:
@@ -227,14 +227,11 @@ class Experiment:
|
|||||||
if not self.ignore_nan:
|
if not self.ignore_nan:
|
||||||
print(res["test_score"])
|
print(res["test_score"])
|
||||||
raise ValueError("NaN in results")
|
raise ValueError("NaN in results")
|
||||||
results = []
|
results = res["test_score"][~np.isnan(res["test_score"])]
|
||||||
for item in res["test_score"]:
|
|
||||||
if not np.isnan(item):
|
|
||||||
results.append(item)
|
|
||||||
else:
|
else:
|
||||||
results = res["test_score"]
|
results = res["test_score"]
|
||||||
self.scores.append(results)
|
self.scores.extend(results)
|
||||||
self.times.append(res["fit_time"])
|
self.times.extend(res["fit_time"])
|
||||||
for result_item in res["estimator"]:
|
for result_item in res["estimator"]:
|
||||||
nodes_item, leaves_item, depth_item = Models.get_complexity(
|
nodes_item, leaves_item, depth_item = Models.get_complexity(
|
||||||
self.model_name, result_item
|
self.model_name, result_item
|
||||||
|
@@ -15,6 +15,19 @@ from xgboost import XGBClassifier
|
|||||||
import sklearn
|
import sklearn
|
||||||
import xgboost
|
import xgboost
|
||||||
|
|
||||||
|
import random
|
||||||
|
|
||||||
|
|
||||||
|
class MockModel(SVC):
|
||||||
|
# Only used for testing
|
||||||
|
def predict(self, X):
|
||||||
|
if random.random() < 0.1:
|
||||||
|
return [float("NaN")] * len(X)
|
||||||
|
return super().predict(X)
|
||||||
|
|
||||||
|
def nodes_leaves(self):
|
||||||
|
return 0, 0
|
||||||
|
|
||||||
|
|
||||||
class Models:
|
class Models:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -50,6 +63,7 @@ class Models:
|
|||||||
),
|
),
|
||||||
"GBC": GradientBoostingClassifier(random_state=random_state),
|
"GBC": GradientBoostingClassifier(random_state=random_state),
|
||||||
"RandomForest": RandomForestClassifier(random_state=random_state),
|
"RandomForest": RandomForestClassifier(random_state=random_state),
|
||||||
|
"Mock": MockModel(random_state=random_state),
|
||||||
}
|
}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@@ -1,4 +1,6 @@
|
|||||||
import json
|
import json
|
||||||
|
from io import StringIO
|
||||||
|
from unittest.mock import patch
|
||||||
from .TestBase import TestBase
|
from .TestBase import TestBase
|
||||||
from ..Experiments import Experiment
|
from ..Experiments import Experiment
|
||||||
from ..Datasets import Datasets
|
from ..Datasets import Datasets
|
||||||
@@ -8,7 +10,9 @@ class ExperimentTest(TestBase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.exp = self.build_exp()
|
self.exp = self.build_exp()
|
||||||
|
|
||||||
def build_exp(self, hyperparams=False, grid=False, model="STree"):
|
def build_exp(
|
||||||
|
self, hyperparams=False, grid=False, model="STree", ignore_nan=False
|
||||||
|
):
|
||||||
params = {
|
params = {
|
||||||
"score_name": "accuracy",
|
"score_name": "accuracy",
|
||||||
"model_name": model,
|
"model_name": model,
|
||||||
@@ -21,7 +25,7 @@ class ExperimentTest(TestBase):
|
|||||||
"title": "Test",
|
"title": "Test",
|
||||||
"progress_bar": False,
|
"progress_bar": False,
|
||||||
"folds": 2,
|
"folds": 2,
|
||||||
"ignore_nan": False,
|
"ignore_nan": ignore_nan,
|
||||||
}
|
}
|
||||||
return Experiment(**params)
|
return Experiment(**params)
|
||||||
|
|
||||||
@@ -157,3 +161,15 @@ class ExperimentTest(TestBase):
|
|||||||
self.assertEqual(computed["state_names"][key], value)
|
self.assertEqual(computed["state_names"][key], value)
|
||||||
for feature in expected["features"]:
|
for feature in expected["features"]:
|
||||||
self.assertIn(feature, computed["features"])
|
self.assertIn(feature, computed["features"])
|
||||||
|
|
||||||
|
@patch("sys.stdout", new_callable=StringIO)
|
||||||
|
def test_experiment_with_nan_not_ignored(self, mock_output):
|
||||||
|
exp = self.build_exp(model="Mock")
|
||||||
|
self.assertRaises(ValueError, exp.do_experiment)
|
||||||
|
output_text = mock_output.getvalue().splitlines()
|
||||||
|
expected = "[ nan 0.8974359]"
|
||||||
|
self.assertEqual(expected, output_text[0])
|
||||||
|
|
||||||
|
def test_experiment_with_nan_ignored(self):
|
||||||
|
self.exp = self.build_exp(model="Mock", ignore_nan=True)
|
||||||
|
self.exp.do_experiment()
|
||||||
|
Reference in New Issue
Block a user