improving unit tests
This commit is contained in:
parent
a04723a976
commit
9207114cfa
|
@ -17,12 +17,35 @@ AGGREGATIVE_METHODS = {
|
||||||
aggregative.MAX,
|
aggregative.MAX,
|
||||||
aggregative.MS,
|
aggregative.MS,
|
||||||
aggregative.MS2,
|
aggregative.MS2,
|
||||||
|
aggregative.DMy,
|
||||||
aggregative.KDEyML,
|
aggregative.KDEyML,
|
||||||
aggregative.KDEyCS,
|
aggregative.KDEyCS,
|
||||||
aggregative.KDEyHD,
|
aggregative.KDEyHD,
|
||||||
aggregative.BayesianCC
|
aggregative.BayesianCC
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BINARY_METHODS = {
|
||||||
|
aggregative.HDy,
|
||||||
|
aggregative.DyS,
|
||||||
|
aggregative.SMM,
|
||||||
|
aggregative.X,
|
||||||
|
aggregative.T50,
|
||||||
|
aggregative.MAX,
|
||||||
|
aggregative.MS,
|
||||||
|
aggregative.MS2,
|
||||||
|
}
|
||||||
|
|
||||||
|
MULTICLASS_METHODS = {
|
||||||
|
aggregative.CC,
|
||||||
|
aggregative.ACC,
|
||||||
|
aggregative.PCC,
|
||||||
|
aggregative.PACC,
|
||||||
|
aggregative.EMQ,
|
||||||
|
aggregative.KDEyML,
|
||||||
|
aggregative.KDEyCS,
|
||||||
|
aggregative.KDEyHD,
|
||||||
|
aggregative.BayesianCC
|
||||||
|
}
|
||||||
|
|
||||||
NON_AGGREGATIVE_METHODS = {
|
NON_AGGREGATIVE_METHODS = {
|
||||||
non_aggregative.MaximumLikelihoodPrevalenceEstimation,
|
non_aggregative.MaximumLikelihoodPrevalenceEstimation,
|
||||||
|
|
|
@ -1522,8 +1522,8 @@ AdjustedClassifyAndCount = ACC
|
||||||
ProbabilisticClassifyAndCount = PCC
|
ProbabilisticClassifyAndCount = PCC
|
||||||
ProbabilisticAdjustedClassifyAndCount = PACC
|
ProbabilisticAdjustedClassifyAndCount = PACC
|
||||||
ExpectationMaximizationQuantifier = EMQ
|
ExpectationMaximizationQuantifier = EMQ
|
||||||
DistributionMatchingY = DMy
|
|
||||||
SLD = EMQ
|
SLD = EMQ
|
||||||
|
DistributionMatchingY = DMy
|
||||||
HellingerDistanceY = HDy
|
HellingerDistanceY = HDy
|
||||||
MedianSweep = MS
|
MedianSweep = MS
|
||||||
MedianSweep2 = MS2
|
MedianSweep2 = MS2
|
||||||
|
|
|
@ -6,14 +6,17 @@ import quapy as qp
|
||||||
from sklearn.linear_model import LogisticRegression
|
from sklearn.linear_model import LogisticRegression
|
||||||
from time import time
|
from time import time
|
||||||
|
|
||||||
from quapy.error import QUANTIFICATION_ERROR_SINGLE, QUANTIFICATION_ERROR, QUANTIFICATION_ERROR_NAMES, \
|
from quapy.error import QUANTIFICATION_ERROR_SINGLE_NAMES
|
||||||
QUANTIFICATION_ERROR_SINGLE_NAMES
|
|
||||||
from quapy.method.aggregative import EMQ, PCC
|
from quapy.method.aggregative import EMQ, PCC
|
||||||
from quapy.method.base import BaseQuantifier
|
from quapy.method.base import BaseQuantifier
|
||||||
|
|
||||||
|
|
||||||
class EvalTestCase(unittest.TestCase):
|
class EvalTestCase(unittest.TestCase):
|
||||||
|
|
||||||
def test_eval_speedup(self):
|
def test_eval_speedup(self):
|
||||||
|
"""
|
||||||
|
Checks whether the speed-up heuristics used by qp.evaluation work, i.e., actually save time
|
||||||
|
"""
|
||||||
|
|
||||||
data = qp.datasets.fetch_reviews('hp', tfidf=True, min_df=10, pickle=True)
|
data = qp.datasets.fetch_reviews('hp', tfidf=True, min_df=10, pickle=True)
|
||||||
train, test = data.training, data.test
|
train, test = data.training, data.test
|
||||||
|
@ -55,8 +58,11 @@ class EvalTestCase(unittest.TestCase):
|
||||||
self.assertEqual(tend_no_optim>(tend_optim/2), True)
|
self.assertEqual(tend_no_optim>(tend_optim/2), True)
|
||||||
|
|
||||||
def test_evaluation_output(self):
|
def test_evaluation_output(self):
|
||||||
|
"""
|
||||||
|
Checks the evaluation functions return correct types for different error_metrics
|
||||||
|
"""
|
||||||
|
|
||||||
data = qp.datasets.fetch_reviews('hp', tfidf=True, min_df=10, pickle=True)
|
data = qp.datasets.fetch_reviews('hp', tfidf=True, min_df=10, pickle=True).reduce(n_train=100, n_test=100)
|
||||||
train, test = data.training, data.test
|
train, test = data.training, data.test
|
||||||
|
|
||||||
qp.environ['SAMPLE_SIZE']=100
|
qp.environ['SAMPLE_SIZE']=100
|
||||||
|
@ -79,6 +85,5 @@ class EvalTestCase(unittest.TestCase):
|
||||||
self.assertEqual(scores.mean(), score)
|
self.assertEqual(scores.mean(), score)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
@ -1,19 +1,54 @@
|
||||||
import unittest
|
import unittest
|
||||||
from sklearn.linear_model import LogisticRegression
|
from sklearn.linear_model import LogisticRegression
|
||||||
|
|
||||||
|
from quapy.method import AGGREGATIVE_METHODS, BINARY_METHODS
|
||||||
from quapy.method.aggregative import *
|
from quapy.method.aggregative import *
|
||||||
|
import inspect
|
||||||
|
|
||||||
|
|
||||||
class HierarchyTestCase(unittest.TestCase):
|
class HierarchyTestCase(unittest.TestCase):
|
||||||
|
|
||||||
def test_aggregative(self):
|
def test_aggregative(self):
|
||||||
lr = LogisticRegression()
|
lr = LogisticRegression()
|
||||||
for m in [CC(lr), PCC(lr), ACC(lr), PACC(lr)]:
|
for m in AGGREGATIVE_METHODS:
|
||||||
self.assertEqual(isinstance(m, AggregativeQuantifier), True)
|
self.assertEqual(isinstance(m(lr), AggregativeQuantifier), True)
|
||||||
|
|
||||||
|
def test_inspect_aggregative(self):
|
||||||
|
|
||||||
|
import quapy.method.aggregative as aggregative
|
||||||
|
|
||||||
|
members = inspect.getmembers(aggregative)
|
||||||
|
classes = set([cls for name, cls in members if inspect.isclass(cls)])
|
||||||
|
quantifiers = [cls for cls in classes if issubclass(cls, BaseQuantifier)]
|
||||||
|
quantifiers = [cls for cls in quantifiers if issubclass(cls, AggregativeQuantifier)]
|
||||||
|
quantifiers = [cls for cls in quantifiers if not inspect.isabstract(cls) ]
|
||||||
|
|
||||||
|
for cls in quantifiers:
|
||||||
|
self.assertIn(cls, AGGREGATIVE_METHODS)
|
||||||
|
|
||||||
def test_binary(self):
|
def test_binary(self):
|
||||||
lr = LogisticRegression()
|
lr = LogisticRegression()
|
||||||
for m in [HDy(lr)]:
|
for m in BINARY_METHODS:
|
||||||
self.assertEqual(isinstance(m, BinaryQuantifier), True)
|
self.assertEqual(isinstance(m(lr), BinaryQuantifier), True)
|
||||||
|
|
||||||
|
def test_inspect_binary(self):
|
||||||
|
|
||||||
|
import quapy.method.base as base
|
||||||
|
import quapy.method.aggregative as aggregative
|
||||||
|
import quapy.method.non_aggregative as non_aggregative
|
||||||
|
import quapy.method.meta as meta
|
||||||
|
|
||||||
|
members = inspect.getmembers(base)
|
||||||
|
members+= inspect.getmembers(aggregative)
|
||||||
|
members += inspect.getmembers(non_aggregative)
|
||||||
|
members += inspect.getmembers(meta)
|
||||||
|
classes = set([cls for name, cls in members if inspect.isclass(cls)])
|
||||||
|
quantifiers = [cls for cls in classes if issubclass(cls, BaseQuantifier)]
|
||||||
|
quantifiers = [cls for cls in quantifiers if issubclass(cls, BinaryQuantifier)]
|
||||||
|
quantifiers = [cls for cls in quantifiers if not inspect.isabstract(cls) ]
|
||||||
|
|
||||||
|
for cls in quantifiers:
|
||||||
|
self.assertIn(cls, BINARY_METHODS)
|
||||||
|
|
||||||
def test_probabilistic(self):
|
def test_probabilistic(self):
|
||||||
lr = LogisticRegression()
|
lr = LogisticRegression()
|
||||||
|
@ -27,3 +62,4 @@ class HierarchyTestCase(unittest.TestCase):
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue