I\'d like to use principal component analysis (PCA) for dimensionality reduction. Does numpy or scipy already have it, or do I have to roll my own using numpy.linalg.eigh?<
If you're working with 3D vectors, you can apply SVD concisely using the toolbelt vg. It's a light layer on top of numpy.
import numpy as np
import vg
vg.principal_components(data)
There's also a convenient alias if you only want the first principal component:
vg.major_axis(data)
I created the library at my last startup, where it was motivated by uses like this: simple ideas which are verbose or opaque in NumPy.