ManifoldLearning.jl

A Julia package for manifold learning and nonlinear dimensionality reduction
Popularity
92 Stars
Updated Last
1 Year Ago
Started In
July 2014

ManifoldLearning

A Julia package for manifold learning and nonlinear dimensionality reduction.

Documentation Build Status

Methods

  • Isomap
  • Diffusion maps
  • Locally Linear Embedding (LLE)
  • Hessian Eigenmaps (HLLE)
  • Laplacian Eigenmaps (LEM)
  • Local tangent space alignment (LTSA)
  • t-Distributed Stochastic Neighborhood Embedding (t-SNE)

Installation

The package can be installed with the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run:

pkg> add ManifoldLearning 

Examples

A simple example of using the Isomap reduction method.

julia> X, _ = ManifoldLearning.swiss_roll(); julia> X 3×1000 Array{Float64,2}: -3.19512 3.51939 -0.0390153  -9.46166 3.44159 29.1222 9.99283 2.25296 25.1417 28.8007 -10.1861 6.59074 -11.037 -1.04484 13.4034 julia> M = fit(Isomap, X) Isomap(outdim = 2, neighbors = 12) julia> Y = transform(M) 2×1000 Array{Float64,2}: 11.0033 -13.069 16.7116  -3.26095 25.7771 18.4133 -6.2693 10.6698 20.0646 -24.8973

Performance

Most of the methods use k-nearest neighbors method for constructing local subspace representation. By default, neighbors are computed from a distance matrix of a dataset. This is not an efficient method, especially, for large datasets.

Consider using a custom k-nearest neighbors function, e.g. from NearestNeighbors.jl or FLANN.jl.

See example of custom knn function here.