# HG changeset patch # User James Bergstra # Date 1301610542 14400 # Node ID c421bac46a975907b2e14910e4a3efcc82b82a7b # Parent 22f48914b3f84eb121ddc214dfe2cb0aad7f0be3 added inplace option for pca_from_examples diff -r 22f48914b3f8 -r c421bac46a97 pylearn/preprocessing/pca.py --- a/pylearn/preprocessing/pca.py Thu Mar 31 18:28:07 2011 -0400 +++ b/pylearn/preprocessing/pca.py Thu Mar 31 18:29:02 2011 -0400 @@ -72,7 +72,8 @@ return w,v -def pca_from_examples(X, max_components=None, max_energy_fraction=None, x_centered=False): +def pca_from_examples(X, max_components=None, max_energy_fraction=None, + x_centered=False, inplace=False): """Return ((eigvals, eigvecs), centered_X) of observations `X` (1-per-row) This function exists to wrap several algorithms for getting the principle components. @@ -90,10 +91,11 @@ :returns: ((eigvals, eigvecs), centered_X) of PCA decomposition """ - if x_centered: - centered_X = X - else: - centered_X = X - numpy.mean(X, axis=0) + if not inplace: + X = X.copy() + centered_X = X + if not x_centered: + centered_X -= numpy.mean(centered_X, axis=0) cov_X = numpy.dot(centered_X.T, centered_X) / (len(X)- 1) evals, evecs = pca_from_cov(cov_X, max_components=max_components, max_energy_fraction=max_energy_fraction)