PLearn 0.1
Functions
incremental_pca.cc File Reference
#include <plearn/vmat/VMat.h>
#include <plearn/vmat/AutoVMatrix.h>
#include <plearn_learners/unsupervised/PCA.h>
Include dependency graph for incremental_pca.cc:

Go to the source code of this file.

Functions

bool compare (PCA &classical, PCA &incremental, VMat data, int start, int end)
int main (int argc, char **argv)

Function Documentation

bool compare ( PCA classical,
PCA incremental,
VMat  data,
int  start,
int  end 
)

Definition at line 8 of file incremental_pca.cc.

References PLearn::PCA::eigenvals, PLearn::endl(), i, PLearn::is_equal(), PLearn::TVec< T >::length(), PLearn::PCA::setTrainingSet(), PLearn::VMat::subMatRows(), and PLearn::PCA::train().

Referenced by findRelevantWeights(), main(), and sortedIndexList().

{
    classical.setTrainingSet  ( data.subMatRows(start, end-start), false );
    incremental.setTrainingSet( data.subMatRows(0, end)    , false );
  
    cout << "From " << start << " to " << end << endl;
       
    classical.train();
    incremental.train();

    bool equal = true;
    for ( int i=0; i < classical.eigenvals.length(); i++ )
        if ( not is_equal( classical.eigenvals[i],
                           incremental.eigenvals[i] ) )
        {
            cerr << "classical.eigenvals[" << i << "] = "
                 << classical.eigenvals[i] << endl
                 << "incremental.eigenvals[" << i << "] = "
                 << incremental.eigenvals[i] << endl
                 << endl;
            equal = false;
        }

    if ( equal )
        cout << "OK.\n===\n" << endl;
    else
        cout << "FAILED!!!" << endl;
  
    return equal;
}

Here is the call graph for this function:

Here is the caller graph for this function:

int main ( int  argc,
char **  argv 
)

Definition at line 40 of file incremental_pca.cc.

References PLearn::PCA::_horizon, PLearn::PCA::algo, PLearn::PCA::build(), compare(), PLearn::endl(), i, PLearn::PLearnError::message(), PLearn::PCA::ncomponents, PLearn::PCA::normalize_warning, and PLearn::PLearner::report_progress.

{
    try{
        PCA classical;
        classical.ncomponents         = 3;
        classical.report_progress     = 0;
        classical.normalize_warning   = 0;
        classical.build();
  
        PCA incremental;
        incremental.algo              = "incremental";
        incremental._horizon          = 10;
    
        incremental.ncomponents       = 3;
        incremental.report_progress   = 0;
        incremental.normalize_warning = 0;
        incremental.build();

        VMat data = new AutoVMatrix( "PLEARNDIR:examples/data/test_suite/multi_gaussian_data.amat" );
        compare( classical, incremental, data,  0, 10 );
        compare( classical, incremental, data, 10, 20 );

        for ( int i=11; i <= 20; i++ )
            compare( classical, incremental, data, i, i+10 );
    }
    catch(const PLearnError& e)
    {
        cerr << "FATAL ERROR: " << e.message() << endl;
    }
    catch (...) 
    {
        cerr << "FATAL ERROR: uncaught unknown exception" << endl;
    }
    
    return 0;
}

Here is the call graph for this function:

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines