1  import sys 
 2   
 5          self.className = None 
 6          self.examplesByClass = {} 
 7          self.filteredByClass = {} 
 8          self.filteredByClassByFilter = {} 
 9          self.counts = {}  
10          self.values = {}  
11          self.variables = {}  
 12       
14          if name not in self.values: 
15              self.values[name] = 0 
16          self.values[name] += amount 
 17       
19          self.variables[name] = variable 
 20       
23       
29       
31          assert self.className == None 
32           
33          self.className = className 
34          self.filteredBy = set() 
 35       
37          assert self.className != None 
38          assert filterName != "total" 
39          self.filteredBy.add(filterName) 
 40       
42          assert self.className != None 
43           
44          if not self.examplesByClass.has_key(self.className): 
45              self.examplesByClass[self.className] = 0 
46          self.examplesByClass[self.className] += 1 
47           
48          if not self.filteredByClass.has_key(self.className): 
49              self.filteredByClass[self.className] = 0 
50          if len(self.filteredBy) > 0: 
51              self.filteredByClass[self.className] += 1 
52   
53          for filter in self.filteredBy: 
54              if not self.filteredByClassByFilter.has_key(self.className): 
55                  self.filteredByClassByFilter[self.className] = {} 
56              if not self.filteredByClassByFilter[self.className].has_key(filter): 
57                  self.filteredByClassByFilter[self.className][filter] = 0 
58              self.filteredByClassByFilter[self.className][filter] += 1 
59          self.className = None 
 60   
62          return sum(self.examplesByClass.values()) 
 63       
65          print >> sys.stderr, "Example Statistics (total/filtered)" 
66           
67          counts = [0,0] 
68          for className in sorted(self.examplesByClass.keys()): 
69              if self.filteredByClassByFilter.has_key(className): 
70                  filterStr = str( self.filteredByClassByFilter[className] ) 
71              else: 
72                  filterStr = "" 
73              print >> sys.stderr, " ", className + ": " + str(self.examplesByClass[className]) + "/" + str(self.filteredByClass[className]), filterStr 
74              if className != "neg": 
75                  counts[0] += self.examplesByClass[className] 
76                  counts[1] += self.filteredByClass[className] 
77          if counts[0] != 0: 
78              posCoverage = float(counts[0] - counts[1]) / float(counts[0]) * 100.0 
79              print >> sys.stderr, "Positives Coverage %.2f" % posCoverage,  "%", counts 
80           
81          for value in sorted(self.values.keys()): 
82              print >> sys.stderr, value + ":", self.values[value] 
83          for variable in sorted(self.variables.keys()): 
84              print >> sys.stderr, variable + ":", self.variables[variable] 
  85           
86       
87       
88