Skip to content
Snippets Groups Projects
Commit 8743631b authored by bbauvin's avatar bbauvin
Browse files

Full tests for metrics scores

parent 46e8c8c2
No related branches found
No related tags found
No related merge requests found
......@@ -10,8 +10,8 @@ addons:
- gfortran
install:
- pip install -U pip pip-tools
- pip install numpy scipy scikit-learn matplotlib logging joblib argparse h5py
- git clone https://github.com/aldro61/pyscm.git /tmp/pyscm && cd /tmp/pyscm/ && python setup.py install && cd ~/babau1/multiview-machine-learning-omis
- pip install numpy scipy scikit-learn matplotlib joblib argparse h5py
- cd .. && git clone https://github.com/aldro61/pyscm.git && cd pyscm/ && python setup.py install && cd ../multiview-machine-learning-omis
script:
- python -m unittest discover
......
......@@ -27,7 +27,7 @@ def score(y_true, y_pred, **kwargs):
try:
average = kwargs["3"]
except:
average = "binary"
average = "micro"
score = metric(y_true, y_pred, sample_weight=sample_weight, labels=labels, pos_label=pos_label, average=average)
return score
......
......@@ -205,6 +205,7 @@ class Test_genMetricsScores(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.multiclass_labels = np.array([0,1,2,3,4,5,2,1,3])
cls.wrong_labels = np.array([1,3,3,4,5,0,2,4,3])
cls.multiclassResults = [{"chicken_is_heaven":
{"labels": cls.multiclass_labels}}]
cls.true_labels = np.array([0,2,2,3,4,5,1,3,2])
......@@ -215,6 +216,47 @@ class Test_genMetricsScores(unittest.TestCase):
multiclassResults = ExecClassif.genMetricsScores(cls.multiclassResults, cls.true_labels, cls.metrics)
cls.assertEqual(cls.score_to_get, multiclassResults[0]["chicken_is_heaven"]["metricsScores"]["accuracy_score"])
def test_multiple_clf(cls):
cls.multiclassResults = [{"chicken_is_heaven": {"labels": cls.multiclass_labels},
"cheese_is_no_disease": {"labels": cls.wrong_labels}},
]
multiclassResults = ExecClassif.genMetricsScores(cls.multiclassResults, cls.true_labels, cls.metrics)
cls.assertEqual(0, multiclassResults[0]["cheese_is_no_disease"]["metricsScores"]["accuracy_score"])
cls.assertEqual(cls.score_to_get, multiclassResults[0]["chicken_is_heaven"]["metricsScores"]["accuracy_score"])
def test_multiple_metrics(cls):
from sklearn.metrics import f1_score
cls.score_to_get_f1 = f1_score(cls.true_labels, cls.multiclass_labels, average="micro")
cls.metrics = [["accuracy_score"], ["f1_score"]]
multiclassResults = ExecClassif.genMetricsScores(cls.multiclassResults, cls.true_labels, cls.metrics)
cls.assertEqual(cls.score_to_get, multiclassResults[0]["chicken_is_heaven"]["metricsScores"]["accuracy_score"])
cls.assertEqual(cls.score_to_get_f1, multiclassResults[0]["chicken_is_heaven"]["metricsScores"]["f1_score"])
def test_multiple_iterations(cls):
cls.multiclassResults = [{"chicken_is_heaven": {"labels": cls.multiclass_labels}},
{"chicken_is_heaven": {"labels": cls.wrong_labels}},
]
multiclassResults = ExecClassif.genMetricsScores(cls.multiclassResults, cls.true_labels, cls.metrics)
cls.assertEqual(0, multiclassResults[1]["chicken_is_heaven"]["metricsScores"]["accuracy_score"])
cls.assertEqual(cls.score_to_get, multiclassResults[0]["chicken_is_heaven"]["metricsScores"]["accuracy_score"])
def test_all(cls):
cls.multiclassResults = [{"chicken_is_heaven": {"labels": cls.multiclass_labels},
"cheese_is_no_disease": {"labels": cls.wrong_labels}},
{"chicken_is_heaven": {"labels": cls.wrong_labels},
"cheese_is_no_disease": {"labels": cls.multiclass_labels}},
]
cls.metrics = [["accuracy_score"], ["f1_score"]]
from sklearn.metrics import f1_score
cls.score_to_get_f1 = f1_score(cls.true_labels, cls.multiclass_labels, average="micro")
multiclassResults = ExecClassif.genMetricsScores(cls.multiclassResults, cls.true_labels, cls.metrics)
cls.assertEqual(0, multiclassResults[1]["chicken_is_heaven"]["metricsScores"]["accuracy_score"])
cls.assertEqual(cls.score_to_get_f1, multiclassResults[1]["cheese_is_no_disease"]["metricsScores"]["f1_score"])
# {},
# {"cheese_is_no_disease": {"labels": cls.multiclass_labels}}}
# {{{"chicken_is_heaven": {"labels": cls.wrong_labels}},
# {}}}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment