[Scipy-svn] r4725 - in trunk/scipy/maxentropy: . examples tests

scipy-svn@scip... scipy-svn@scip...
Thu Sep 18 14:24:02 CDT 2008


Author: alan.mcintyre
Date: 2008-09-18 14:23:58 -0500 (Thu, 18 Sep 2008)
New Revision: 4725

Modified:
   trunk/scipy/maxentropy/examples/bergerexample.py
   trunk/scipy/maxentropy/examples/conditionalexample2.py
   trunk/scipy/maxentropy/maxentropy.py
   trunk/scipy/maxentropy/maxentutils.py
   trunk/scipy/maxentropy/tests/test_maxentropy.py
Log:
Removed unused imports.
Standardized NumPy import as "import numpy as np".
PEP8 conformance (one import per line).


Modified: trunk/scipy/maxentropy/examples/bergerexample.py
===================================================================
--- trunk/scipy/maxentropy/examples/bergerexample.py	2008-09-18 19:15:47 UTC (rev 4724)
+++ trunk/scipy/maxentropy/examples/bergerexample.py	2008-09-18 19:23:58 UTC (rev 4725)
@@ -20,8 +20,6 @@
 __author__ =  'Ed Schofield'
 __version__=  '2.1'
 
-
-import math
 from scipy import maxentropy
 
 a_grave = u'\u00e0'

Modified: trunk/scipy/maxentropy/examples/conditionalexample2.py
===================================================================
--- trunk/scipy/maxentropy/examples/conditionalexample2.py	2008-09-18 19:15:47 UTC (rev 4724)
+++ trunk/scipy/maxentropy/examples/conditionalexample2.py	2008-09-18 19:23:58 UTC (rev 4725)
@@ -18,9 +18,7 @@
 
 __author__ =  'Ed Schofield'
 
-import math
 from scipy import maxentropy, sparse
-import numpy
 
 samplespace = ['dans', 'en', 'à', 'au cours de', 'pendant']
 # Occurrences of French words, and their 'next English word' contexts, in

Modified: trunk/scipy/maxentropy/maxentropy.py
===================================================================
--- trunk/scipy/maxentropy/maxentropy.py	2008-09-18 19:15:47 UTC (rev 4724)
+++ trunk/scipy/maxentropy/maxentropy.py	2008-09-18 19:23:58 UTC (rev 4725)
@@ -70,8 +70,8 @@
 
 
 import math, types, cPickle
-import numpy
-from scipy import optimize, sparse
+import numpy as np
+from scipy import optimize
 from scipy.linalg import norm
 from scipy.maxentropy.maxentutils import *
 
@@ -194,7 +194,7 @@
                                       " using setfeaturesandsamplespace()"
 
         # First convert K to a numpy array if necessary
-        K = numpy.asarray(K, float)
+        K = np.asarray(K, float)
 
         # Store the desired feature expectations as a member variable
         self.K = K
@@ -212,7 +212,7 @@
         # self.gradevals = 0
 
         # Make a copy of the parameters
-        oldparams = numpy.array(self.params)
+        oldparams = np.array(self.params)
 
         callback = self.log
 
@@ -272,7 +272,7 @@
                     + "' is unsupported.  Options are 'CG', 'LBFGSB', " \
                     "'Nelder-Mead', 'Powell', and 'BFGS'"
 
-        if numpy.any(self.params != newparams):
+        if np.any(self.params != newparams):
             self.setparams(newparams)
         self.func_calls = func_calls
 
@@ -322,7 +322,7 @@
             self.setparams(params)
 
         # Subsumes both small and large cases:
-        L = self.lognormconst() - numpy.dot(self.params, self.K)
+        L = self.lognormconst() - np.dot(self.params, self.K)
 
         if self.verbose and self.external is None:
             print "  dual is ", L
@@ -332,7 +332,7 @@
         # Define 0 / 0 = 0 here; this allows a variance term of
         # sigma_i^2==0 to indicate that feature i should be ignored.
         if self.sigma2 is not None and ignorepenalty==False:
-            ratios = numpy.nan_to_num(self.params**2 / self.sigma2)
+            ratios = np.nan_to_num(self.params**2 / self.sigma2)
             # Why does the above convert inf to 1.79769e+308?
 
             L += 0.5 * ratios.sum()
@@ -396,7 +396,7 @@
                 self.test()
 
         if not self.callingback and self.external is None:
-            if self.mindual > -numpy.inf and self.dual() < self.mindual:
+            if self.mindual > -np.inf and self.dual() < self.mindual:
                 raise DivergenceError, "dual is below the threshold 'mindual'" \
                         " and may be diverging to -inf.  Fix the constraints" \
                         " or lower the threshold!"
@@ -428,7 +428,7 @@
         if self.sigma2 is not None and ignorepenalty==False:
             penalty = self.params / self.sigma2
             G += penalty
-            features_to_kill = numpy.where(numpy.isnan(penalty))[0]
+            features_to_kill = np.where(np.isnan(penalty))[0]
             G[features_to_kill] = 0.0
             if self.verbose and self.external is None:
                 normG = norm(G)
@@ -449,7 +449,7 @@
         return G
 
 
-    def crossentropy(self, fx, log_prior_x=None, base=numpy.e):
+    def crossentropy(self, fx, log_prior_x=None, base=np.e):
         """Returns the cross entropy H(q, p) of the empirical
         distribution q of the data (with the given feature matrix fx)
         with respect to the model p.  For discrete distributions this is
@@ -466,9 +466,9 @@
         For continuous distributions this makes no sense!
         """
         H = -self.logpdf(fx, log_prior_x).mean()
-        if base != numpy.e:
+        if base != np.e:
             # H' = H * log_{base} (e)
-            return H / numpy.log(base)
+            return H / np.log(base)
         else:
             return H
 
@@ -483,7 +483,7 @@
         Z = E_aux_dist [{exp (params.f(X))} / aux_dist(X)] using a sample
         from aux_dist.
         """
-        return numpy.exp(self.lognormconst())
+        return np.exp(self.lognormconst())
 
 
     def setsmooth(sigma):
@@ -507,7 +507,7 @@
         length as the model's feature vector f.
         """
 
-        self.params = numpy.array(params, float)        # make a copy
+        self.params = np.array(params, float)        # make a copy
 
         # Log the new params to disk
         self.logparams()
@@ -546,7 +546,7 @@
                 raise ValueError, "specify the number of features / parameters"
 
         # Set parameters, clearing cache variables
-        self.setparams(numpy.zeros(m, float))
+        self.setparams(np.zeros(m, float))
 
         # These bounds on the param values are only effective for the
         # L-BFGS-B optimizer:
@@ -595,7 +595,7 @@
             return
 
         # Check whether the params are NaN
-        if not numpy.all(self.params == self.params):
+        if not np.all(self.params == self.params):
             raise FloatingPointError, "some of the parameters are NaN"
 
         if self.verbose:
@@ -775,15 +775,15 @@
                 raise AttributeError, "prior probability mass function not set"
 
         def p(x):
-            f_x = numpy.array([f[i](x) for i in range(len(f))], float)
+            f_x = np.array([f[i](x) for i in range(len(f))], float)
 
             # Do we have a prior distribution p_0?
             if priorlogpmf is not None:
                 priorlogprob_x = priorlogpmf(x)
-                return math.exp(numpy.dot(self.params, f_x) + priorlogprob_x \
+                return math.exp(np.dot(self.params, f_x) + priorlogprob_x \
                                 - logZ)
             else:
-                return math.exp(numpy.dot(self.params, f_x) - logZ)
+                return math.exp(np.dot(self.params, f_x) - logZ)
         return p
 
 
@@ -893,7 +893,7 @@
         # As an optimization, p_tilde need not be copied or stored at all, since
         # it is only used by this function.
 
-        self.p_tilde_context = numpy.empty(numcontexts, float)
+        self.p_tilde_context = np.empty(numcontexts, float)
         for w in xrange(numcontexts):
             self.p_tilde_context[w] = self.p_tilde[0, w*S : (w+1)*S].sum()
 
@@ -932,7 +932,7 @@
         if self.priorlogprobs is not None:
             log_p_dot += self.priorlogprobs
 
-        self.logZ = numpy.zeros(numcontexts, float)
+        self.logZ = np.zeros(numcontexts, float)
         for w in xrange(numcontexts):
             self.logZ[w] = logsumexp(log_p_dot[w*S: (w+1)*S])
         return self.logZ
@@ -972,8 +972,7 @@
 
         logZs = self.lognormconst()
 
-        L = numpy.dot(self.p_tilde_context, logZs) - numpy.dot(self.params, \
-                                                               self.K)
+        L = np.dot(self.p_tilde_context, logZs) - np.dot(self.params, self.K)
 
         if self.verbose and self.external is None:
             print "  dual is ", L
@@ -1069,7 +1068,7 @@
             log_p_dot += self.priorlogprobs
         if not hasattr(self, 'logZ'):
             # Compute the norm constant (quickly!)
-            self.logZ = numpy.zeros(numcontexts, float)
+            self.logZ = np.zeros(numcontexts, float)
             for w in xrange(numcontexts):
                 self.logZ[w] = logsumexp(log_p_dot[w*S : (w+1)*S])
         # Renormalize
@@ -1366,8 +1365,8 @@
             #     -log(n-1) + logsumexp(2*log|Z_k - meanZ|)
 
             self.logZapprox = logsumexp(logZs) - math.log(ttrials)
-            stdevlogZ = numpy.array(logZs).std()
-            mus = numpy.array(mus)
+            stdevlogZ = np.array(logZs).std()
+            mus = np.array(mus)
             self.varE = columnvariances(mus)
             self.mu = columnmeans(mus)
             return
@@ -1459,7 +1458,7 @@
         log_Z_est = self.lognormconst()
 
         def p(fx):
-            return numpy.exp(innerprodtranspose(fx, self.params) - log_Z_est)
+            return np.exp(innerprodtranspose(fx, self.params) - log_Z_est)
         return p
 
 
@@ -1486,7 +1485,7 @@
         """
         log_Z_est = self.lognormconst()
         if len(fx.shape) == 1:
-            logpdf = numpy.dot(self.params, fx) - log_Z_est
+            logpdf = np.dot(self.params, fx) - log_Z_est
         else:
             logpdf = innerprodtranspose(fx, self.params) - log_Z_est
         if log_prior_x is not None:
@@ -1536,8 +1535,8 @@
                     # Use Kersten-Deylon accelerated SA, based on the rate of
                     # changes of sign of the gradient.  (If frequent swaps, the
                     # stepsize is too large.)
-                    #n += (numpy.dot(y_k, y_kminus1) < 0)   # an indicator fn
-                    if numpy.dot(y_k, y_kminus1) < 0:
+                    #n += (np.dot(y_k, y_kminus1) < 0)   # an indicator fn
+                    if np.dot(y_k, y_kminus1) < 0:
                         n += 1
                     else:
                         # Store iterations of sign switches (for plotting
@@ -1590,7 +1589,7 @@
             if self.verbose:
                 print "SA: after iteration " + str(k)
                 print "  approx dual fn is: " + str(self.logZapprox \
-                            - numpy.dot(self.params, K))
+                            - np.dot(self.params, K))
                 print "  norm(mu_est - k) = " + str(norm_y_k)
 
             # Update params (after the convergence tests too ... don't waste the
@@ -1682,7 +1681,7 @@
         self.external = None
         self.clearcache()
 
-        meandual = numpy.average(dualapprox,axis=0)
+        meandual = np.average(dualapprox,axis=0)
         self.external_duals[self.iters] = dualapprox
         self.external_gradnorms[self.iters] = gradnorms
 
@@ -1692,7 +1691,7 @@
                  (len(self.externalFs), meandual)
             print "** Mean mean square error of the (unregularized) feature" \
                     " expectation estimates from the external samples =" \
-                    " mean(|| \hat{\mu_e} - k ||,axis=0) =", numpy.average(gradnorms,axis=0)
+                    " mean(|| \hat{\mu_e} - k ||,axis=0) =", np.average(gradnorms,axis=0)
         # Track the parameter vector params with the lowest mean dual estimate
         # so far:
         if meandual < self.bestdual:

Modified: trunk/scipy/maxentropy/maxentutils.py
===================================================================
--- trunk/scipy/maxentropy/maxentutils.py	2008-09-18 19:15:47 UTC (rev 4724)
+++ trunk/scipy/maxentropy/maxentutils.py	2008-09-18 19:23:58 UTC (rev 4725)
@@ -17,7 +17,9 @@
 __author__ = "Ed Schofield"
 __version__ = '2.0'
 
-import random, math, bisect, cmath
+import random
+import math
+import cmath
 import numpy
 from numpy import log, exp, asarray, ndarray
 from scipy import sparse

Modified: trunk/scipy/maxentropy/tests/test_maxentropy.py
===================================================================
--- trunk/scipy/maxentropy/tests/test_maxentropy.py	2008-09-18 19:15:47 UTC (rev 4724)
+++ trunk/scipy/maxentropy/tests/test_maxentropy.py	2008-09-18 19:23:58 UTC (rev 4725)
@@ -6,9 +6,8 @@
 Copyright: Ed Schofield, 2003-2005
 """
 
-import sys
 from numpy.testing import *
-from numpy import arange, add, array, dot, zeros, identity, log, exp, ones
+from numpy import arange, log, exp, ones
 from scipy.maxentropy.maxentropy import *
 
 class TestMaxentropy(TestCase):



More information about the Scipy-svn mailing list