source: orange/Orange/testing/regression/tests/test_auc.py @ 10175:45d7fb4aa9d3

Revision 10175:45d7fb4aa9d3, 1.5 KB checked in by anze <anze.staric@…>, 2 years ago (diff)

Updated test results.

Line 
1from Orange import data
2from Orange.evaluation import testing, scoring
3from Orange.statistics import distribution
4import random
5auc = scoring.AUC
6random.seed(0)
7
8def random_learner(data, *args):
9    def random_classifier(*args, **kwargs):
10        prob = [random.random() for _ in data.domain.class_var.values]
11        sprob = sum(prob)
12        prob = [i/sprob for i in prob]
13        distribution.Discrete(prob)
14        return data.domain.class_var[0], prob
15    return random_classifier
16
17def test(measures, test_results):
18    n = len(measures)
19    print "%8s"*n % tuple(m[1] for m in measures)
20    print "=" * 8 * n
21    for tr in test_results:
22        print "%8.4f"*n % tuple(m[0](tr)[0] for m in measures)
23    print
24
25def run_tests(datasets, measures, tests, iterations=10):
26    for ds, ds_name in datasets:
27        for t, t_name in tests:
28            print "Testing %s on %s" % (t_name, ds_name)
29            test_results = [t(random_learner, ds) for _ in xrange(iterations)]
30            test(measures, test_results)
31
32
33datasets = (
34    (data.Table("iris"), "Iris"),
35    (data.Table("monks-1"), "Monks")
36)
37
38measures = (
39    (lambda x:auc(x), "AUC"),
40    (lambda x:auc(x, method=0), "AUC+M0"),
41    (lambda x:auc(x, method=1), "AUC+M1"),
42    (lambda x:auc(x, method=2), "AUC+M2"),
43    (lambda x:auc(x, method=3), "AUC+M3"),
44)
45
46tests = (
47    (lambda l, ds: testing.cross_validation([l],ds), "CV"),
48    (lambda l, ds: testing.proportion_test([l], ds, .7, 1), "Proportion test"),
49)
50
51run_tests(datasets, measures, tests)
Note: See TracBrowser for help on using the repository browser.