ManifoldLearning.jl

The package ManifoldLearning aims to provide a library for manifold learning and non-linear dimensionality reduction. It provides set of nonlinear dimensionality reduction methods, such as Isomap, LLE, LTSA, and etc.

Getting started

To install the package just type

] add ManifoldLearning

The following example shows how to apply Isomap dimensionality reduction method to the build-in S curve dataset.

using ManifoldLearning
X, L = ManifoldLearning.scurve(segments=5);
scatter3d(X[1,:], X[2,:], X[3,:], c=L,palette=cgrad(:default),ms=2.5,leg=:none,camera=(10,10))

Now, we perform dimensionality reduction procedure and plot the resulting dataset:

Y = predict(fit(Isomap, X))
scatter(Y[1,:], Y[2,:], c=L, palette=cgrad(:default), ms=2.5, leg=:none)

Following dimensionality reduction methods are implemented in this package:

MethodsDescription
IsomapIsometric mapping
LLELocally Linear Embedding
HLLEHessian Eigenmaps
LEMLaplacian Eigenmaps
LTSALocal Tangent Space Alignment
DiffMapDiffusion maps
TSNEt-Distributed Stochastic Neighborhood Embedding

Notes: All methods implemented in this package adopt the column-major convention of JuliaStats: in a data matrix, each column corresponds to a sample/observation, while each row corresponds to a feature (variable or attribute).