Navigation Menu

Skip to content

Commit

Permalink
Added embed to distance to LaplacianEigenmaps
Browse files Browse the repository at this point in the history
  • Loading branch information
lisitsyn committed Oct 23, 2011
1 parent 4e3ea17 commit ae5401a
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
21 changes: 14 additions & 7 deletions src/shogun/converter/LaplacianEigenmaps.cpp
Expand Up @@ -9,8 +9,8 @@
*/

#include <shogun/converter/LaplacianEigenmaps.h>
#ifdef HAVE_LAPACK
#include <shogun/converter/EmbeddingConverter.h>
#ifdef HAVE_LAPACK
#include <shogun/mathematics/arpack.h>
#include <shogun/mathematics/lapack.h>
#include <shogun/lib/FibonacciHeap.h>
Expand Down Expand Up @@ -76,14 +76,21 @@ CFeatures* CLaplacianEigenmaps::apply(CFeatures* features)
ASSERT(m_k<N);
ASSERT(m_target_dim<N);

// loop variables
int32_t i,j;

// compute distance matrix
ASSERT(m_distance);
m_distance->init(features,features);
SGMatrix<float64_t> W_sgmatrix = m_distance->get_distance_matrix();
CSimpleFeatures<float64_t>* embedding = embed(m_distance);
m_distance->remove_lhs_and_rhs();
SG_UNREF(features);
return (CFeatures*)embedding;
}

CSimpleFeatures<float64_t>* CLaplacianEigenmaps::embed(CDistance* distance)
{
int32_t i,j;
SGMatrix<float64_t> W_sgmatrix = distance->get_distance_matrix();
ASSERT(W_sgmatrix.num_rows==W_sgmatrix.num_cols);
int32_t N = W_sgmatrix.num_rows;
// shorthand
float64_t* W_matrix = W_sgmatrix.matrix;

Expand Down Expand Up @@ -199,7 +206,7 @@ CFeatures* CLaplacianEigenmaps::apply(CFeatures* features)
}
W_sgmatrix.destroy_matrix();

SG_UNREF(features);
return (CFeatures*)(new CSimpleFeatures<float64_t>(new_features));
return new CSimpleFeatures<float64_t>(new_features);
}

#endif /* HAVE_LAPACK */
10 changes: 10 additions & 0 deletions src/shogun/converter/LaplacianEigenmaps.h
Expand Up @@ -54,8 +54,18 @@ class CLaplacianEigenmaps: public CEmbeddingConverter
/** destructor */
virtual ~CLaplacianEigenmaps();

/** apply to features
* @param features to embed
* @param embedding features
*/
virtual CFeatures* apply(CFeatures* features);

/** embed distance
* @param distance to use for embedding
* @param embedding features
*/
virtual CSimpleFeatures<float64_t>* embed(CDistance* distance);

/** setter for K parameter
* @param k k value
*/
Expand Down

0 comments on commit ae5401a

Please sign in to comment.