21 using namespace shogun;
34 return "LinearLocalTangentSpaceAlignment";
52 cblas_dgemm(CblasColMajor,CblasNoTrans,CblasNoTrans,dim,N,N,1.0,feature_matrix.
matrix,dim,matrix.
matrix,N,0.0,XTM,dim);
53 cblas_dgemm(CblasColMajor,CblasNoTrans,CblasTrans,dim,dim,N,1.0,XTM,dim,feature_matrix.
matrix,dim,0.0,lhs_M,dim);
57 cblas_daxpy(dim,1.0,feature_matrix.
matrix+i*dim,1,mean_vector,1);
59 cblas_dscal(dim,1.0/N,mean_vector,1);
62 cblas_daxpy(dim,-1.0,mean_vector,1,feature_matrix.
matrix+i*dim,1);
66 cblas_dgemm(CblasColMajor,CblasNoTrans,CblasTrans,dim,dim,N,1.0,feature_matrix.
matrix,dim,feature_matrix.
matrix,dim,0.0,rhs_M,dim);
68 for (i=0; i<dim; i++) rhs_M[i*dim+i] += 1e-6;
74 arpack_dsxupd(lhs_M,rhs_M,
false,dim,dimension,
"LA",
false,3,
true,
false,
m_nullspace_shift,0.0,
77 wrap_dsygvx(1,
'V',
'U',dim,lhs_M,dim,rhs_M,dim,dim-dimension+1,dim,evals,evectors,&info);
82 if (info!=0)
SG_ERROR(
"Failed to solve eigenproblem (%d)\n",info);
84 for (i=0; i<dimension/2; i++)
86 cblas_dswap(dim,evectors+i*dim,1,evectors+(dimension-i-1)*dim,1);
89 cblas_dgemm(CblasColMajor,CblasTrans,CblasNoTrans,N,dimension,dim,1.0,feature_matrix.
matrix,dim,evectors,dim,0.0,XTM,N);
93 for (i=0; i<dimension; i++)
96 new_features[j*dimension+i] = XTM[i*N+j];