From: <jd...@us...> - 2009-11-03 20:52:08
|
Revision: 7927 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7927&view=rev Author: jdh2358 Date: 2009-11-03 20:51:55 +0000 (Tue, 03 Nov 2009) Log Message: ----------- added pca test Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/__init__.py trunk/matplotlib/lib/matplotlib/mlab.py Added Paths: ----------- trunk/matplotlib/lib/matplotlib/tests/test_mlab.py Modified: trunk/matplotlib/lib/matplotlib/__init__.py =================================================================== --- trunk/matplotlib/lib/matplotlib/__init__.py 2009-11-03 20:27:23 UTC (rev 7926) +++ trunk/matplotlib/lib/matplotlib/__init__.py 2009-11-03 20:51:55 UTC (rev 7927) @@ -905,6 +905,7 @@ 'matplotlib.tests.test_backend_svg', 'matplotlib.tests.test_basic', 'matplotlib.tests.test_cbook', + 'matplotlib.tests.test_mlab', 'matplotlib.tests.test_transforms', 'matplotlib.tests.test_axes', 'matplotlib.tests.test_dates', Modified: trunk/matplotlib/lib/matplotlib/mlab.py =================================================================== --- trunk/matplotlib/lib/matplotlib/mlab.py 2009-11-03 20:27:23 UTC (rev 7926) +++ trunk/matplotlib/lib/matplotlib/mlab.py 2009-11-03 20:51:55 UTC (rev 7927) @@ -761,7 +761,7 @@ """ WARNING: this function is deprecated -- please see class PCA instead - + Compute the principal components of *P*. *P* is a (*numVars*, *numObs*) array. *frac* is the minimum fraction of variance that a component must contain to be included. @@ -870,6 +870,27 @@ 'center the data using the mean and sigma from training set a' return (x - self.mu)/self.sigma + + + @staticmethod + def _get_colinear(): + c0 = np.array([ + 0.19294738, 0.6202667 , 0.45962655, 0.07608613, 0.135818 , + 0.83580842, 0.07218851, 0.48318321, 0.84472463, 0.18348462, + 0.81585306, 0.96923926, 0.12835919, 0.35075355, 0.15807861, + 0.837437 , 0.10824303, 0.1723387 , 0.43926494, 0.83705486]) + + c1 = np.array([ + -1.17705601, -0.513883 , -0.26614584, 0.88067144, 1.00474954, + -1.1616545 , 0.0266109 , 0.38227157, 1.80489433, 0.21472396, + -1.41920399, -2.08158544, -0.10559009, 1.68999268, 0.34847107, + -0.4685737 , 1.23980423, -0.14638744, -0.35907697, 0.22442616]) + + c2 = c0 + 2*c1 + c3 = -3*c0 + 4*c1 + a = np.array([c3, c0, c1, c2]).T + return a + def prctile(x, p = (0.0, 25.0, 50.0, 75.0, 100.0)): """ Return the percentiles of *x*. *p* can either be a sequence of Added: trunk/matplotlib/lib/matplotlib/tests/test_mlab.py =================================================================== --- trunk/matplotlib/lib/matplotlib/tests/test_mlab.py (rev 0) +++ trunk/matplotlib/lib/matplotlib/tests/test_mlab.py 2009-11-03 20:51:55 UTC (rev 7927) @@ -0,0 +1,11 @@ +import numpy as np +import matplotlib.mlab as mlab + +@staticmethod +def test_colinear_pca(): + a = mlab.PCA._get_colinear() + pca = mlab.PCA(a) + + assert(np.allclose(pca.fracs[2:], 0.)) + assert(np.allclose(pca.Y[:,2:], 0.)) + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |