21 using namespace shogun;
34 return "LocalityPreservingProjections";
50 D_diag_vector[i] += W_matrix[i*N+j];
59 W_matrix[i*N+i] += D_diag_vector[i];
66 cblas_dgemm(CblasColMajor,CblasNoTrans,CblasNoTrans,dim,N,N,1.0,feature_matrix.
matrix,dim,W_matrix.
matrix,N,0.0,XTM,dim);
67 cblas_dgemm(CblasColMajor,CblasNoTrans,CblasTrans,dim,dim,N,1.0,XTM,dim,feature_matrix.
matrix,dim,0.0,lhs_M,dim);
70 cblas_dscal(dim,D_diag_vector[i],feature_matrix.
matrix+i*dim,1);
72 cblas_dgemm(CblasColMajor,CblasNoTrans,CblasTrans,dim,dim,N,1.0,feature_matrix.
matrix,dim,feature_matrix.
matrix,dim,0.0,rhs_M,dim);
75 cblas_dscal(dim,1.0/D_diag_vector[i],feature_matrix.
matrix+i*dim,1);
81 arpack_dsxupd(lhs_M,rhs_M,
false,dim,
m_target_dim,
"LA",
false,3,
true,-1e-9,0.0,
84 wrap_dsygvx(1,
'V',
'U',dim,lhs_M,dim,rhs_M,dim,dim-
m_target_dim+1,dim,evals,evectors,&info);
89 if (info!=0)
SG_ERROR(
"Failed to solve eigenproblem (%d)\n",info);
91 cblas_dgemm(CblasColMajor,CblasTrans,CblasNoTrans,N,
m_target_dim,dim,1.0,feature_matrix.
matrix,dim,evectors,dim,0.0,XTM,N);
98 new_features[j*m_target_dim+i] = XTM[i*N+j];
virtual int32_t get_num_vectors() const
void get_feature_matrix(ST **dst, int32_t *num_feat, int32_t *num_vec)
virtual const char * get_name() const
CLocalityPreservingProjections()
virtual CSimpleFeatures< float64_t > * construct_embedding(CFeatures *features, SGMatrix< float64_t > W_matrix)
void wrap_dsygvx(int itype, char jobz, char uplo, int n, double *a, int lda, double *b, int ldb, int il, int iu, double *eigenvalues, double *eigenvectors, int *info)
the class LaplacianEigenmaps used to preprocess data using Laplacian Eigenmaps algorithm as described...
The class Features is the base class of all feature objects.
#define SG_MALLOC(type, len)
int32_t get_num_features()
#define SG_CALLOC(type, len)
virtual ~CLocalityPreservingProjections()