A Julia package for manifold learning and nonlinear dimensionality reduction.
| Documentation | Build Status |
|---|---|
- 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)
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 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.8973Most 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.