Package nltk_lite :: Package contrib :: Package classifier_tests :: Module confusionmatrixtests
[hide private]
[frames] | no frames]

Source Code for Module nltk_lite.contrib.classifier_tests.confusionmatrixtests

  1  # Natural Language Toolkit 
  2  # 
  3  # Author: Sumukh Ghodke <sumukh dot ghodke at gmail dot com> 
  4  # 
  5  # URL: <http://nltk.sf.net> 
  6  # This software is distributed under GPL, for license information see LICENSE.TXT 
  7   
  8  from nltk_lite.contrib.classifier import confusionmatrix as cm, format 
  9  from nltk_lite.contrib.classifier.exceptions import systemerror as se 
 10  from nltk_lite.contrib.classifier_tests import * 
 11   
12 -class ConfusionMatrixTestCase(unittest.TestCase):
13 - def setUp(self):
14 weather = format.C45_FORMAT.get_klass(datasetsDir(self) + 'minigolf' + SEP + 'weather') 15 self.c = cm.ConfusionMatrix(weather) 16 self.pos = 'yes' 17 self.neg = 'no'
18
20 self.__assert_matrix(0, 0, 0, 0)
21
23 self.__assert_matrix(0, 0, 0, 0) 24 self.c.count(self.pos, self.pos) 25 self.__assert_matrix(1, 0, 0, 0) 26 self.c.count(self.pos, self.pos) 27 self.__assert_matrix(2, 0, 0, 0) 28 self.c.count(self.pos, self.neg) 29 self.__assert_matrix(2, 1, 0, 0) 30 self.c.count(self.neg, self.pos) 31 self.__assert_matrix(2, 1, 1, 0) 32 self.c.count(self.neg, self.neg) 33 self.__assert_matrix(2, 1, 1, 1)
34
36 self.c.count(self.pos, self.pos) 37 self.c.count(self.pos, self.neg) 38 self.c.count(self.neg, self.pos) 39 self.c.count(self.neg, self.pos) 40 self.assertEqual(0.25, self.c.accuracy()) 41 self.assertEqual(0.75, self.c.error())
42
43 - def test_true_positive_rate(self):
44 self.c.count(self.pos, self.pos) 45 self.c.count(self.pos, self.neg) 46 self.c.count(self.neg, self.pos) 47 self.assertEqual(0.5, self.c.tpr()) 48 self.assertEqual(0.5, self.c.sensitivity())
49
50 - def test_true_negative_rate(self):
51 self.c.count(self.pos, self.neg) 52 self.c.count(self.neg, self.pos) 53 self.c.count(self.neg, self.neg) 54 self.c.count(self.neg, self.neg) 55 self.assertAlmostEqual(0.66666667, self.c.tnr(), 8) 56 self.assertAlmostEqual(0.66666667, self.c.specificity(), 8)
57
58 - def test_false_positive_rate(self):
59 self.c.count(self.neg, self.pos) 60 self.c.count(self.neg, self.neg) 61 self.c.count(self.neg, self.neg) 62 self.assertAlmostEqual(0.33333333, self.c.fpr(), 8)
63
64 - def test_precision(self):
65 self.c.count(self.pos, self.pos) 66 self.c.count(self.pos, self.neg) 67 self.c.count(self.neg, self.pos) 68 self.c.count(self.neg, self.pos) 69 self.c.count(self.neg, self.pos) 70 self.assertEqual(0.25, self.c.precision())
71
72 - def test_recall(self):
73 self.c.count(self.pos, self.pos) 74 self.c.count(self.pos, self.pos) 75 self.c.count(self.pos, self.neg) 76 self.c.count(self.neg, self.pos) 77 self.c.count(self.neg, self.neg) 78 self.assertAlmostEqual(0.66666667, self.c.recall(), 8)
79
80 - def test_fscore(self):
81 self.c.count(self.pos, self.pos) 82 self.c.count(self.pos, self.neg) 83 self.c.count(self.neg, self.pos) 84 self.c.count(self.neg, self.pos) 85 self.c.count(self.neg, self.pos) 86 self.assertEqual(0.25, self.c.precision()) 87 self.assertAlmostEqual(0.5, self.c.recall(), 8) 88 self.assertAlmostEqual(0.33333333, self.c.fscore(), 8)
89
91 self.c.count(self.pos, self.neg) 92 self.c.count(self.pos, self.neg) 93 self.c.count(self.neg, self.neg) 94 self.c.count(self.neg, self.neg) 95 self.assertEqual(0, self.c.precision()) 96 self.assertEqual(0, self.c.recall()) 97 self.assertEqual(0, self.c.fscore()) 98 self.assertEqual(0.5, self.c.accuracy())
99
100 - def __assert_matrix(self, tp, fn, fp, tn):
101 self.assertEqual(tp, self.c.tp()) 102 self.assertEqual(fn, self.c.fn()) 103 self.assertEqual(fp, self.c.fp()) 104 self.assertEqual(tn, self.c.tn())
105