[SciPy-user] Manifold Learning Technology Preview

Matthieu Brucher matthieu.brucher at gmail.com
Mon Apr 7 09:48:24 EDT 2008


Hi,

For those who want to use manifold learning tools, I'm happy to announce
that scikits.learn has now an implementation of the usual techniques. They
may not all work (I'm in the process of testing them and fixing the porting
issues) at the moment, but they will in the near future.

What's inside ?
  - compression is where the usual techniques are located (PCA by Zachary
Pincus, Isomap, LLE, Laplacian Eigenmaps, Hessian Eigenmaps, Diffusion maps,
CCA and my own technique). Only the dimensionality reduction is done here,
that is original space to a reduced space.
  - regression is a set of multidimensional regression tools that will
generate a model between the reduced space to the original space. Here is a
linear model (called PCA, because it is generally used in conjunction with
PCA) and a piecewise linear model
  - projection will enable the projection on a new point on the manifold
with the help of the model.

No Nyström extension at the moment, but perhaps some one will create a
regression model based on this.
Some techniques create a reduced space and a model at the same time (with a
fixed number of linear models, like Brandt's one), I did not implement them,
but they could benefit from the projection module.

I will add a tutorial on the scikits trac when I have some time, with
details on the interfaces that can be used and reused.

Here is a small test for people who want to test it right now. Suppose you
have an array with 1000 points in a 3D space (so a 1000x3 array) :

>>> from scikits.learn.machine.manifold_learning import compression
>>> coords = compression.isomap(test, 2, neighbors=9)

Here the Isomap algorithm was used, the test array was reduced from 3D to
2D, and the number of neighbors used to create the neighbors graph was 9 (in
fact |point + number of neighbors| = 9, this may need some fixes).

The TP does not need an additional scikit, only numpy and scipy (trunk) and
optionally scikits.openopt (trunk) for CCA, my reduction technique and the
projections (if needed).

Matthieu
-- 
French PhD student
Website : http://matthieu-brucher.developpez.com/
Blogs : http://matt.eifelle.com and http://blog.developpez.com/?blog=92
LinkedIn : http://www.linkedin.com/in/matthieubrucher
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.scipy.org/pipermail/scipy-user/attachments/20080407/ebf7c70e/attachment.html>


More information about the SciPy-User mailing list