# HG changeset patch # User James Bergstra # Date 1284518151 14400 # Node ID 822c7691a7599fd278a5bb3440ea45c2d3697436 # Parent f0129e37a8ef8e472ca54e8a6513dc297e8200b0 pca - added pca_whiten_inverse function diff -r f0129e37a8ef -r 822c7691a759 pylearn/preprocessing/pca.py --- a/pylearn/preprocessing/pca.py Wed Sep 08 13:18:13 2010 -0400 +++ b/pylearn/preprocessing/pca.py Tue Sep 14 22:35:51 2010 -0400 @@ -109,6 +109,15 @@ pca_of_X /= numpy.sqrt(eigvals)+eps return pca_of_X +def pca_whiten_inverse((eigvals, eigvecs), whitened_X, eps=1e-8): + """ + Return an approximate inverse of the `pca_whiten` transform. + + The inverse is not perfect because pca_whitening discards the least-significant components + of the data. + """ + return numpy.dot(whitened_X * (numpy.sqrt(eigvals)+eps), eigvecs.T) + def zca_whiten((eigvals, eigvecs), centered_X): """Return the PCA of X but rotated back into the original vector space.