[Scipy-svn] r2964 - in trunk/Lib/cluster: . tests

scipy-svn at scipy.org scipy-svn at scipy.org
Sat May 5 05:11:54 EDT 2007


Author: cdavid
Date: 2007-05-05 04:11:47 -0500 (Sat, 05 May 2007)
New Revision: 2964

Modified:
   trunk/Lib/cluster/tests/test_vq.py
   trunk/Lib/cluster/vq.py
Log:
Fix clusters.kmeans2 for 1d dimension data, generate better for unsupported rank 1 arrays and fix test for _vq

Modified: trunk/Lib/cluster/tests/test_vq.py
===================================================================
--- trunk/Lib/cluster/tests/test_vq.py	2007-05-05 08:52:03 UTC (rev 2963)
+++ trunk/Lib/cluster/tests/test_vq.py	2007-05-05 09:11:47 UTC (rev 2964)
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 
 # David Cournapeau
-# Last Change: Thu Apr 26 09:00 PM 2007 J
+# Last Change: Sat May 05 06:00 PM 2007 J
 
 # For now, just copy the tests from sandbox.pyem, so we can check that
 # kmeans works OK for trivial examples.
@@ -13,6 +13,12 @@
 
 set_package_path()
 from cluster.vq import kmeans, kmeans2, py_vq, py_vq2, _py_vq_1d
+try:
+    from cluster import _vq
+    TESTC=True
+except ImportError:
+    print "== Error while importing _vq, not testing C imp of vq =="
+    TESTC=False
 restore_path()
 
 #Optional:
@@ -53,12 +59,11 @@
     def check_vq(self, level=1):
         initc = N.concatenate(([[X[0]], [X[1]], [X[2]]]))
         code = initc.copy()
-        try:
-            import _vq
+        if TESTC:
             label1 = _vq.double_vq(X, initc)[0]
             assert_array_equal(label1, LABEL1)
-        except ImportError:
-            print "== Error while importing _vq, not testing C imp of vq =="
+        else:
+            print "== not testing C imp of vq =="
 
     #def check_vq_1d(self, level=1):
     #    data = X[:, 0]
@@ -115,5 +120,11 @@
         kmeans2(data, 3, minit = 'random')
         kmeans2(data, 3, minit = 'points')
 
+        # Check special case 1d
+        data = data[:, :1]
+        kmeans2(data, 3, minit = 'random')
+        kmeans2(data, 3, minit = 'points')
+
+
 if __name__ == "__main__":
     NumpyTest().run()

Modified: trunk/Lib/cluster/vq.py
===================================================================
--- trunk/Lib/cluster/vq.py	2007-05-05 08:52:03 UTC (rev 2963)
+++ trunk/Lib/cluster/vq.py	2007-05-05 09:11:47 UTC (rev 2964)
@@ -446,8 +446,8 @@
             Number of samples to generate.
 
     """
-    mu = N.mean(data, 0)
-    cov = N.cov(data, rowvar = 0)
+    mu  = N.mean(data, 0)
+    cov = N.atleast_2d(N.cov(data, rowvar = 0))
 
     # k rows, d cols (one row = one obs)
     # Generate k sample of a random variable ~ Gaussian(mu, cov)
@@ -500,6 +500,7 @@
     nd  = N.ndim(data)
     if nd == 1:
         d = 1
+        raise ValueError("Input of rank 1 not supported yet")
     elif nd == 2:
         d = data.shape[1]
     else:




More information about the Scipy-svn mailing list