[Spambayes-checkins] spambayes TestDriver.py,1.5,1.6
Tim Peters
tim_one@users.sourceforge.net
Sun, 22 Sep 2002 01:31:50 -0700
Update of /cvsroot/spambayes/spambayes
In directory usw-pr-cvs1:/tmp/cvs-serv15892
Modified Files:
TestDriver.py
Log Message:
Augmented the Hist class to compute and display mean and (sample) sdev.
Index: TestDriver.py
===================================================================
RCS file: /cvsroot/spambayes/spambayes/TestDriver.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** TestDriver.py 22 Sep 2002 06:58:36 -0000 1.5
--- TestDriver.py 22 Sep 2002 08:31:48 -0000 1.6
***************
*** 36,39 ****
--- 36,42 ----
self.buckets = [0] * nbuckets
self.nbuckets = nbuckets
+ self.n = 0 # number of data points
+ self.sum = 0.0 # sum of their values
+ self.sumsq = 0.0 # sum of their squares
def add(self, x):
***************
*** 44,47 ****
--- 47,55 ----
self.buckets[i] += 1
+ self.n += 1
+ x *= 100.0
+ self.sum += x
+ self.sumsq += x*x
+
def __iadd__(self, other):
if self.nbuckets != other.nbuckets:
***************
*** 49,55 ****
--- 57,77 ----
for i in range(self.nbuckets):
self.buckets[i] += other.buckets[i]
+ self.n += other.n
+ self.sum += other.sum
+ self.sumsq += other.sumsq
return self
def display(self, WIDTH=60):
+ from math import sqrt
+ if self.n > 1:
+ mean = self.sum / self.n
+ # sum (x_i - mean)**2 = sum (x_i**2 - 2*x_i*mean + mean**2) =
+ # sum x_i**2 - 2*mean*sum x_i + sum mean**2 =
+ # sum x_i**2 - 2*mean*mean*n + n*mean**2 =
+ # sum x_i**2 - n*mean**2
+ samplevar = (self.sumsq - self.n * mean**2) / (self.n - 1)
+ print "%d items; mean %.2f; sample sdev %.2f" % (self.n,
+ mean, sqrt(samplevar))
+
biggest = max(self.buckets)
hunit, r = divmod(biggest, WIDTH)