Package mdp :: Package nodes :: Class PCANode
[hide private]
[frames] | no frames]

type PCANode

Known Subclasses:

Filter the input data throug the most significatives of its
principal components.

Internal variables of interest:
self.avg -- Mean of the input data (available after training)
self.v -- Transposed of the projection matrix (available after training)
self.d -- Variance corresponding to the PCA components
          (eigenvalues of the covariance matrix)
self.explained_variance -- When output_dim has been specified as a fraction
                           of the total variance, this is the fraction
                           of the total variance that is actually explained


More information about Principal Component Analysis, a.k.a. discrete
Karhunen-Loeve transform can be found among others in
I.T. Jolliffe, Principal Component Analysis, Springer-Verlag (1986).

Instance Methods [hide private]
 
__init__(self, input_dim=None, output_dim=None, dtype=None, svd=False, reduce=False, var_rel=1e-15, var_abs=1e-15)
The number of principal components to be kept can be specified as 'output_dim' directly (e.g.
 
_adjust_output_dim(self)
 
_check_output(self, y)
 
_execute(self, x, n=None)
 
_get_supported_dtypes(self)
Return the list of dtypes supported by this node.
 
_inverse(self, y, n=None)
Project 'y' to the input space using the first 'n' components.
 
_stop_training(self, debug=False)
 
_train(self, x)
 
execute(self, x, n=None)
Project the input on the first 'n' principal components.
 
get_explained_variance(self)
Return the fraction of the original variance that can be explained by self._output_dim PCA components.
 
get_projmatrix(self, transposed=1)
Return the projection matrix.
 
get_recmatrix(self, transposed=1)
Return the back-projection matrix (i.e.
 
inverse(self, y, n=None)
Project 'y' to the input space using the first 'n' components.
 
stop_training(self, debug=False)
Stop the training phase.
    Inherited from Node
 
__call__(self, x)
Calling an instance if Node is equivalent to call its 'execute' method.
 
__repr__(self)
 
__str__(self)
 
_check_input(self, x)
 
_check_train_args(self, x, *args, **kwargs)
 
_get_train_seq(self)
 
_if_training_stop_training(self)
 
_pre_execution_checks(self, x)
This method contains all pre-execution checks.
 
_pre_inversion_checks(self, y)
This method contains all pre-inversion checks.
 
_refcast(self, x)
Helper function to cast arrays to the internal dtype.
 
_set_dtype(self, t)
 
_set_input_dim(self, n)
 
_set_output_dim(self, n)
 
copy(self, protocol=-1)
Return a deep copy of the node.
 
get_current_train_phase(self)
Return the index of the current training phase.
 
get_dtype(self)
Return dtype.
 
get_input_dim(self)
Return input dimensions.
 
get_output_dim(self)
Return output dimensions.
 
get_remaining_train_phase(self)
Return the number of training phases still to accomplish.
 
get_supported_dtypes(self)
Return dtypes supported by the node as a list of numpy.dtype objects.
 
is_invertible(self)
Return True if the node can be inverted, False otherwise.
 
is_trainable(self)
Return True if the node can be trained, False otherwise.
 
is_training(self)
Return True if the node is in the training phase, False otherwise.
 
save(self, filename, protocol=-1)
Save a pickled representation of the node to 'filename'.
 
set_dtype(self, t)
Set Node's internal structures dtype.
 
set_input_dim(self, n)
Set input dimensions.
 
set_output_dim(self, n)
Set output dimensions.
 
train(self, x, *args, **kwargs)
Update the internal structures according to the input data 'x'.
Properties [hide private]
    Inherited from Node
  _train_seq
List of tuples: [(training-phase1, stop-training-phase1), (training-phase2, stop_training-phase2), ...
  dtype
dtype
  input_dim
Input dimensions
  output_dim
Output dimensions
  supported_dtypes
Supported dtypes
Method Details [hide private]

__init__(self, input_dim=None, output_dim=None, dtype=None, svd=False, reduce=False, var_rel=1e-15, var_abs=1e-15)
(Constructor)

 
The number of principal components to be kept can be specified as
'output_dim' directly (e.g. 'output_dim=10' means 10 components
are kept) or by the fraction of variance to be explained
(e.g. 'output_dim=0.95' means that as many components as necessary
will be kept in order to explain 95% of the input variance).

Other Keyword Arguments:

svd -- if True use Singular Valude Decomposition instead of the
       standard eigenvalue problem solver. Use it when PCANode
       complains about singular covariance matrices

reduce -- Keep only those principal components which have a variance
          larger than 'var_abs' and a variance relative to the
          first principal component larger than 'var_rel'. Note:
          when the 'reduce' switch is enabled, the actual number of
          principal components (self.output_dim) may be different from
          that set when creating the instance.

Overrides: Node.__init__

_adjust_output_dim(self)

 

_check_output(self, y)

 
Overrides: Node._check_output

_execute(self, x, n=None)

 
Overrides: Node._execute

_get_supported_dtypes(self)

 
Return the list of dtypes supported by this node.
The types can be specified in any format allowed by numpy.dtype.

Overrides: Node._get_supported_dtypes
(inherited documentation)

_inverse(self, y, n=None)

 
Project 'y' to the input space using the first 'n' components.
If 'n' is not set, use all available components.

Overrides: Node._inverse

_stop_training(self, debug=False)

 
Overrides: Node._stop_training

_train(self, x)

 
Overrides: Node._train

execute(self, x, n=None)

 
Project the input on the first 'n' principal components.
If 'n' is not set, use all available components.

Overrides: Node.execute

get_explained_variance(self)

 
Return the fraction of the original variance that can be
explained by self._output_dim PCA components.
If for example output_dim has been set to 0.95, the explained
variance could be something like 0.958...
Note that if output_dim was explicitly set to be a fixed number
of components, there is no way to calculate the explained variance.

get_projmatrix(self, transposed=1)

 
Return the projection matrix.

get_recmatrix(self, transposed=1)

 
Return the back-projection matrix (i.e. the reconstruction matrix).
        

inverse(self, y, n=None)

 
Project 'y' to the input space using the first 'n' components.
If 'n' is not set, use all available components.

Overrides: Node.inverse

stop_training(self, debug=False)

 
Stop the training phase.

Keyword arguments:

debug=True     if stop_training fails because of singular cov
               matrices, the singular matrices itselves are stored in
               self.cov_mtx and self.dcov_mtx to be examined.

Overrides: Node.stop_training