.. AUTO-GENERATED FILE -- DO NOT EDIT!

.. _example_projections:


Visualization of Data Projection Methods
========================================

::
  
  from mvpa.misc.data_generators import noisy_2d_fx
  from mvpa.mappers.pca import PCAMapper
  from mvpa.mappers.svd import SVDMapper
  from mvpa.mappers.ica import ICAMapper
  from mvpa import cfg
  
  import pylab as P
  import numpy as N
  center = [10, 20]
  axis_range = 7
  
  def plotProjDir(mproj):
      p = mproj + N.array(center).T
  
      P.plot([center[0], p[0,0]], [center[1], p[0,1]], hold=True)
      P.plot([center[0], p[1,0]], [center[1], p[1,1]], hold=True)
  
  
  
  mappers = {
              'PCA': PCAMapper(),
              'SVD': SVDMapper(),
              'ICA': ICAMapper(),
            }
  datasets = [
      noisy_2d_fx(100, lambda x: x, [lambda x: x],
                  center, noise_std=.5),
      noisy_2d_fx(50, lambda x: x, [lambda x: x, lambda x: -x],
                  center, noise_std=.5),
      noisy_2d_fx(50, lambda x: x, [lambda x: x, lambda x: 0],
                  center, noise_std=.5),
     ]
  
  ndatasets = len(datasets)
  nmappers = len(mappers.keys())
  
  P.figure(figsize=(8,8))
  fig = 1
  
  for ds in datasets:
      for mname, mapper in mappers.iteritems():
          mapper.train(ds)
  
          dproj = mapper.forward(ds.samples)
          mproj = mapper.proj
          print mproj
  
          P.subplot(ndatasets, nmappers, fig)
          if fig <= 3:
              P.title(mname)
          P.axis('equal')
  
          P.scatter(ds.samples[:, 0],
                    ds.samples[:, 1],
                    s=30, c=(ds.labels) * 200)
          plotProjDir(mproj)
          fig += 1
  
  
  if cfg.getboolean('examples', 'interactive', True):
      P.show()
  

Output of the example:

.. image:: ../pics/ex_projections.*
   :align: center
   :alt: SVD/ICA/PCA projections


.. seealso::
  The full source code of this example is included in the PyMVPA source distribution (`doc/examples/projections.py`).
