File: dimension_reduction.py

package info (click to toggle)
nipy 0.1.2%2B20100526-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 11,992 kB
  • ctags: 13,434
  • sloc: python: 47,720; ansic: 41,334; makefile: 197
file content (33 lines) | stat: -rw-r--r-- 912 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
# vi: set ft=python sts=4 ts=4 sw=4 et:
"""
Example of dimension reduction on a swiss roll using Isomap.
Bertrand Thirion, 2008-2010
"""
print __doc__

import numpy as np
from nipy.neurospin.eda.dimension_reduction import swiss_roll, isomap, CCA,\
     mds, MDS, knn_Isomap , PCA
import nipy.neurospin.graph.graph as fg
import matplotlib.pylab as mp

# Generate a swiss roll datasets
# y are the 3D coordinates
# x are  he  2D latent coordinates
nbsamp = 1000
y, x = swiss_roll(nbsamp)

M = knn_Isomap(y, rdim=3)
u = M.train(k=7)

# cheack that u and x span the same space,
# i.e. their two canonical coorelations are close to 1
sv = CCA(x-x.mean(0),u[:,:2])
print 'the canonical correlations between true parameters and estimated are %f, %f' %(sv[0],sv[1])

ax = M.G.show(u[:,:2])
ax.set_title('embedding of the data graph')
mp.show()